public void Run() { Jitting(); long invokeCount = 1; int unrollFactor = TargetJob.Run.UnrollFactor.Resolve(Resolver); IList <Measurement> idle = null; if (TargetJob.Run.RunStrategy.Resolve(Resolver) != RunStrategy.ColdStart) { invokeCount = pilotStage.Run(); if (TargetJob.Accuracy.EvaluateOverhead.Resolve(Resolver)) { warmupStage.RunIdle(invokeCount, unrollFactor); idle = targetStage.RunIdle(invokeCount, unrollFactor); } warmupStage.RunMain(invokeCount, unrollFactor); } var main = targetStage.RunMain(invokeCount, unrollFactor); // TODO: Move calculation of the result measurements to a separated class PrintResult(idle, main); }
public RunResults Run() { long invokeCount = InvocationCount; IReadOnlyList <Measurement> idle = null; if (EngineEventSource.Log.IsEnabled()) { EngineEventSource.Log.BenchmarkStart(BenchmarkName); } if (Strategy != RunStrategy.ColdStart) { if (Strategy != RunStrategy.Monitoring) { invokeCount = pilotStage.Run(); if (EvaluateOverhead) { warmupStage.RunOverhead(invokeCount, UnrollFactor); idle = actualStage.RunOverhead(invokeCount, UnrollFactor); } } warmupStage.RunWorkload(invokeCount, UnrollFactor, Strategy); } Host.BeforeMainRun(); var main = actualStage.RunWorkload(invokeCount, UnrollFactor, forceSpecific: Strategy == RunStrategy.Monitoring); Host.AfterMainRun(); (GcStats workGcHasDone, ThreadingStats threadingStats) = includeExtraStats ? GetExtraStats(new IterationData(IterationMode.Workload, IterationStage.Actual, 0, invokeCount, UnrollFactor)) : (GcStats.Empty, ThreadingStats.Empty); if (EngineEventSource.Log.IsEnabled()) { EngineEventSource.Log.BenchmarkStop(BenchmarkName); } var outlierMode = TargetJob.ResolveValue(AccuracyMode.OutlierModeCharacteristic, Resolver); return(new RunResults(idle, main, outlierMode, workGcHasDone, threadingStats)); }