public void CouldCompleteObserverBenchmark() { var count = 10000000; var map = new SortedMap <int, int>(count); var subscriber = new SumValuesObserver(true); map.Subscribe(subscriber); var expectedSum = 0; var sw = new Stopwatch(); sw.Start(); for (int i = 0; i < count; i++) { map.Add(i, i); expectedSum += i; } Assert.IsFalse(subscriber.IsCompleted); map.Complete(); Assert.IsTrue(subscriber.Completed.Result); sw.Stop(); Console.WriteLine($"Elapsed: {sw.ElapsedMilliseconds}"); Console.WriteLine($"MOps: {(count * 0.001) / sw.ElapsedMilliseconds}"); Assert.AreEqual(expectedSum, subscriber.Sum); Assert.IsTrue(subscriber.IsCompleted); }