private ThroughputTestResult RunConcurrently(int threads) { var messages = CreateMessages(); var sut = _serialDisposableFactory(); Program.Clean(); var result = new ThroughputTestResult(threads, RunSize); Parallel.ForEach( messages, new ParallelOptions { MaxDegreeOfParallelism = threads }, (item, state, idx) => _assign(sut, item)); sut.Dispose(); result.Dispose(); if (messages.Any(b => !b.IsDisposed)) { Console.WriteLine($"{sut.GetType().Name} operated incorrectly. There are still {messages.Count(b => !b.IsDisposed)} objects not disposed."); return(ThroughputTestResult.InvalidResult(threads, RunSize)); } return(result); }
private ThroughputTestResult RunSynchronously() { var messages = CreateMessages(); var sut = _serialDisposableFactory(); Program.Clean(); var result = new ThroughputTestResult(1, RunSize); foreach (var item in messages) { _assign(sut, item); } sut.Dispose(); result.Dispose(); Console.WriteLine($"Elapsed {result.Elapsed.TotalSeconds}sec"); if (messages.Any(b => !b.IsDisposed)) { Console.WriteLine($"{sut.GetType().Name} operated incorrectly. There are still {messages.Count(b => !b.IsDisposed)} objects not disposed."); return(ThroughputTestResult.InvalidResult(1, RunSize)); } return(result); }