public SpecificBenchmarkRunner( IBenchmarkRunner runner, Type benchmarkContainerType) { this.runner = runner; this.BenchmarkClass = benchmarkContainerType; }
public static BenchmarkResults RunBenchmark <TBenchmarkContainer>( this IBenchmarkRunner runner, IEnumerable <ISampleSizeDeterminer> forSampleSizeDeterminers) { var estimate = runner.GetRunEstimate <TBenchmarkContainer>(forSampleSizeDeterminers); return(runner.RunBenchmark <TBenchmarkContainer>(estimate.RunParameters)); }
public static ISpecificBenchmarkRunner For <TContainerBaseline, TContainerTreatment>( this IBenchmarkRunner runner, Expression <Action <TContainerBaseline> > baseline, Expression <Action <TContainerTreatment> > treatment) { ValidateForMethodPreconditions(baseline, treatment); var baselineMethod = ((MethodCallExpression)baseline.Body).Method; var treatmentMethod = ((MethodCallExpression)treatment.Body).Method; var type = baselineMethod.DeclaringType; var methodInfo = typeof(BenchmarkRunnerExtensions).GetMethod(nameof(ForBenchmarkContainer)); var gen = methodInfo.MakeGenericMethod(type); object target = null; // Because it's static return((ISpecificBenchmarkRunner)gen.Invoke(target, new object[] { runner })); }
public static ISpecificBenchmarkRunner ForBenchmarkContainer <TBenchmarkContainer>( this IBenchmarkRunner runner) { return(new SpecificBenchmarkRunner(runner, typeof(TBenchmarkContainer))); }