Skip to content

Commit 8898ee5

Browse files
committed
chore-add-support-DebugBuildConfig
1 parent a0cadb9 commit 8898ee5

File tree

2 files changed

+28
-19
lines changed

2 files changed

+28
-19
lines changed

samples/BenchmarkDotNet.Samples/Program.cs

Lines changed: 27 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1-
using BenchmarkDotNet.Configs;
1+
using BenchmarkDotNet.Attributes;
2+
using BenchmarkDotNet.Configs;
3+
using BenchmarkDotNet.Diagnosers;
24
using BenchmarkDotNet.Engines;
3-
using BenchmarkDotNet.Jobs;
5+
using BenchmarkDotNet.Exporters;
46
using BenchmarkDotNet.Loggers;
57
using BenchmarkDotNet.Reports;
68
using BenchmarkDotNet.Running;
7-
using BenchmarkDotNet.Toolchains.InProcess.Emit;
89
using System;
910
using System.Collections.Generic;
1011
using System.Linq;
@@ -26,12 +27,7 @@ public static int Main(string[] args)
2627
ConsoleLogger.Default.WriteLine();
2728
}
2829

29-
IConfig config;
30-
#if DEBUG
31-
config = GetDebugConfig();
32-
#else
33-
config = null; // `DefaultConfig.Instance` is used.
34-
#endif
30+
IConfig? config = GetConfig(ref args);
3531

3632
var summaries = BenchmarkSwitcher.FromAssembly(typeof(Program).Assembly)
3733
.Run(args, config)
@@ -43,17 +39,29 @@ public static int Main(string[] args)
4339
return 0;
4440
}
4541

46-
private static ManualConfig GetDebugConfig()
42+
private static IConfig? GetConfig(ref string[] args)
4743
{
48-
return DefaultConfig.Instance
49-
.WithOptions(ConfigOptions.DisableOptimizationsValidator)
50-
.WithOptions(ConfigOptions.StopOnFirstError)
51-
.AddJob(
52-
Job.Default
53-
.WithId("WithDebugConfiguration")
54-
.WithToolchain(InProcessEmitToolchain.Instance)
55-
.WithStrategy(RunStrategy.Monitoring)
56-
);
44+
#if !DEBUG
45+
return null; // `DefaultConfig.Instance` is used.
46+
#else
47+
bool isInProcess = args.Contains("--inProcess");
48+
if (isInProcess)
49+
args = args.Where(x => x != "--inProcess").ToArray();
50+
51+
DebugConfig config = isInProcess
52+
? new DebugInProcessConfig()
53+
: new DebugBuildConfig();
54+
55+
return config.AddAnalyser(DefaultConfig.Instance.GetAnalysers().ToArray())
56+
.AddDiagnoser(
57+
MemoryDiagnoser.Default,
58+
new ExceptionDiagnoser(new ExceptionDiagnoserConfig(displayExceptionsIfZeroValue: false)),
59+
new ThreadingDiagnoser(new ThreadingDiagnoserConfig(displayCompletedWorkItemCountWhenZero: false, displayLockContentionWhenZero: false))
60+
)
61+
.AddExporter(MarkdownExporter.Default)
62+
.AddValidator(DefaultConfig.Instance.GetValidators().ToArray())
63+
.WithArtifactsPath(DefaultConfig.Instance.ArtifactsPath);
64+
#endif
5765
}
5866
}
5967

samples/BenchmarkDotNet.Samples/Properties/launchSettings.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
"Run IntroBasic Benchmarks": {
1111
"commandName": "Project",
1212
"commandLineArgs": "--filter *IntroBasic*",
13+
// "commandLineArgs": "--filter *IntroBasic* --inProcess --strategy Monitoring", // Use this setting for in-process debug
1314
"workingDirectory": ".",
1415
"environmentVariables": {
1516
}

0 commit comments

Comments
 (0)