scenarioName += " NoNgen";
}
- var program = new JitBenchHarness("JitBench");
+ var program = new JitBenchHarness();
try
{
- var scenarioConfiguration = new ScenarioConfiguration(TimeSpan.FromMilliseconds(60000), startInfo) {
+ var scenarioConfiguration = new ScenarioTestConfiguration(TimeSpan.FromMilliseconds(60000), startInfo) {
Iterations = (int)options.Iterations,
PreIterationDelegate = program.PreIteration,
PostIterationDelegate = program.PostIteration,
+ Scenario = new ScenarioBenchmark("JitBench"),
};
var processesOfInterest = new string[] {
"dotnet.exe",
if (!Directory.Exists(startInfo.WorkingDirectory))
throw new DirectoryNotFoundException(startInfo.WorkingDirectory);
- h.RunScenario(scenarioConfiguration, teardownDelegate: () => {
- return program.PostRun("MusicStore", processesOfInterest, modulesOfInterest);
+ h.RunScenario(scenarioConfiguration, teardownDelegate: (ScenarioBenchmark scenarioBenchmark) => {
+ program.PostRun(scenarioBenchmark, "MusicStore", processesOfInterest, modulesOfInterest);
});
}
catch
}
}
- public JitBenchHarness(string scenarioBenchmarkName)
+ public JitBenchHarness()
{
- _scenarioBenchmarkName = scenarioBenchmarkName;
_stdout = new StringBuilder();
_stderr = new StringBuilder();
IterationsData = new List<IterationData>();
private const string JitBenchTargetFramework = "netcoreapp2.1";
private const string EnvironmentFileName = "JitBenchEnvironment.txt";
- private void PreIteration(Scenario scenario)
+ private void PreIteration(ScenarioTest scenario)
{
PrintHeader("Setting up data standard output/error process handlers.");
_stderr.Clear();
}
- private ScenarioBenchmark PostRun(
+ private void PostRun(
+ ScenarioBenchmark scenarioBenchmark,
string scenarioTestModelName,
IReadOnlyCollection<string> processesOfInterest,
IReadOnlyCollection<string> modulesOfInterest)
{
PrintHeader("Post-Processing scenario data.");
- var scenarioBenchmark = new ScenarioBenchmark(_scenarioBenchmarkName);
-
foreach (var iter in IterationsData)
{
var scenarioExecutionResult = iter.ScenarioExecutionResult;
scenarioBenchmark, iter.ScenarioExecutionResult, processesOfInterest, modulesOfInterest);
}
}
-
- for (int i = scenarioBenchmark.Tests.Count - 1; i >= 0; i--)
- if (scenarioBenchmark.Tests[i].Performance.IterationModels.All(iter => iter.Iteration.Count == 0))
- scenarioBenchmark.Tests.RemoveAt(i);
-
- return scenarioBenchmark;
}
private static ScenarioBenchmark AddEtwData(
#else
private const int NumberOfIterations = 11;
#endif
- private readonly string _scenarioBenchmarkName;
private readonly StringBuilder _stdout;
private readonly StringBuilder _stderr;
Console.WriteLine($"{string.Join(" ", newArgs)}");
using (var h = new XunitPerformanceHarness(newArgs.ToArray()))
{
- var configuration = new ScenarioConfiguration(new TimeSpan(2000000), emptyCmd);
+ var configuration = new ScenarioTestConfiguration(new TimeSpan(2000000), emptyCmd)
+ {
+ Scenario = new ScenarioBenchmark(CurrentBenchmark.Name) { Namespace = "LinkBench" },
+ };
h.RunScenario(configuration, PostRun);
}
}
Console.WriteLine("**********************************************************************");
}
- private static ScenarioBenchmark PostRun()
+ private static void PostRun(ScenarioBenchmark scenario)
{
// The XUnit output doesn't print the benchmark name, so print it now.
Console.WriteLine("{0}", CurrentBenchmark.Name);
- var scenario = new ScenarioBenchmark(CurrentBenchmark.Name)
- {
- Namespace = "LinkBench"
- };
-
CurrentBenchmark.Compute();
addMeasurement(ref scenario, "MSIL Unlinked", SizeMetric, CurrentBenchmark.UnlinkedMsilSize);
addMeasurement(ref scenario, "Total Uninked", SizeMetric, CurrentBenchmark.UnlinkedDirSize);
addMeasurement(ref scenario, "Total Linked", SizeMetric, CurrentBenchmark.LinkedDirSize);
addMeasurement(ref scenario, "Total Reduction", PercMetric, CurrentBenchmark.DirSizeReduction);
-
- return scenario;
}
private static void addMeasurement(ref ScenarioBenchmark scenario, string name, MetricModel metric, double value)