/// <summary> /// Performs this benchmark. /// </summary> /// <param name="engine">The engine on which this benchmark is performed.</param> internal void Perform(BenchmarkEngine engine) { Debug.Assert(engine != null); var startTimestamp = DateTime.UtcNow; for (int i = 0; i < Methods.Count; ++i) { int progress = (int)((float)i / Methods.Count * 100); engine.OnBenchmarkProgressChanged(new ProgressChangedEventArgs(progress, Methods[i].Name)); BenchmarkPerformer.AccumulateResults(engine, this, Methods[i]); } ExecutionTime = DateTime.UtcNow - startTimestamp; }
private static void PerformSingleBenchmark(Benchmark benchmark, BenchmarkedMethod method, BenchmarkPerformer performer) { Debug.Assert(benchmark != null); Debug.Assert(method != null); Debug.Assert(performer != null); performer.SetUpMethods = benchmark.SetUpMethods; performer.CleanUpMethods = benchmark.CleanUpMethods; performer.MethodToBenchmark = method.Method; method.Measures.Add(performer.Run()); }