public void MassiveBulkOpsSyncOldStyle(ResultCompletionMode completionMode, int threads) { int workPerThread = SyncOpsQty / threads; using (var conn = GetOldStyleConnection()) { const int db = 0; string key = "MBOQ"; conn.CompletionMode = completionMode; conn.Wait(conn.Keys.Remove(db, key)); var timeTaken = RunConcurrent(delegate { for (int i = 0; i < workPerThread; i++) { conn.Wait(conn.Strings.Increment(db, key)); } }, threads); int val = (int)conn.Wait(conn.Strings.GetInt64(db, key)); Assert.AreEqual(workPerThread * threads, val); Console.WriteLine("{2}: Time for {0} ops on {4} threads: {1}ms ({3}); ops/s: {5}", workPerThread * threads, timeTaken.TotalMilliseconds, Me(), completionMode, threads, (workPerThread * threads) / timeTaken.TotalSeconds); } }
public void MassiveBulkOpsAsyncOldStyle(bool withContinuation, bool suspendFlush, ResultCompletionMode completionMode) { using (var conn = GetOldStyleConnection()) { const int db = 0; string key = "MBOQ"; conn.CompletionMode = completionMode; conn.Wait(conn.Server.Ping()); Action <Task> nonTrivial = delegate { Thread.SpinWait(5); }; var watch = Stopwatch.StartNew(); if (suspendFlush) { conn.SuspendFlush(); } try { for (int i = 0; i <= AsyncOpsQty; i++) { var t = conn.Strings.Set(db, key, i); if (withContinuation) { t.ContinueWith(nonTrivial); } } } finally { if (suspendFlush) { conn.ResumeFlush(); } } int val = (int)conn.Wait(conn.Strings.GetInt64(db, key)); Assert.AreEqual(AsyncOpsQty, val); watch.Stop(); Console.WriteLine("{2}: Time for {0} ops: {1}ms ({3}, {4}, {5}); ops/s: {6}", AsyncOpsQty, watch.ElapsedMilliseconds, Me(), withContinuation ? "with continuation" : "no continuation", suspendFlush ? "suspend flush" : "flush at whim", completionMode, AsyncOpsQty / watch.Elapsed.TotalSeconds); } }
public void MassiveBulkOpsAsyncOldStyle(bool withContinuation, bool suspendFlush, ResultCompletionMode completionMode) { using (var conn = GetOldStyleConnection()) { const int db = 0; string key = "MBOQ"; conn.CompletionMode = completionMode; conn.Wait(conn.Server.Ping()); Action<Task> nonTrivial = delegate { Thread.SpinWait(5); }; var watch = Stopwatch.StartNew(); if (suspendFlush) conn.SuspendFlush(); try { for (int i = 0; i <= AsyncOpsQty; i++) { var t = conn.Strings.Set(db, key, i); if (withContinuation) t.ContinueWith(nonTrivial); } } finally { if (suspendFlush) conn.ResumeFlush(); } int val = (int)conn.Wait(conn.Strings.GetInt64(db, key)); Assert.AreEqual(AsyncOpsQty, val); watch.Stop(); Console.WriteLine("{2}: Time for {0} ops: {1}ms ({3}, {4}, {5}); ops/s: {6}", AsyncOpsQty, watch.ElapsedMilliseconds, Me(), withContinuation ? "with continuation" : "no continuation", suspendFlush ? "suspend flush" : "flush at whim", completionMode, AsyncOpsQty / watch.Elapsed.TotalSeconds); } }