我正在对一些 .net framework 技术进行基准测试,使用的是 .net framework、C# 和 BenchmarkDotNet
我的目标是编写大量基准测试,并仅对报告的摘要部分感兴趣。如何配置 BenchmarkDotNet 仅显示测试的摘要部分?
这里有一张截图,以便更加清楚;
我正在对一些 .net framework 技术进行基准测试,使用的是 .net framework、C# 和 BenchmarkDotNet
我的目标是编写大量基准测试,并仅对报告的摘要部分感兴趣。如何配置 BenchmarkDotNet 仅显示测试的摘要部分?
这里有一张截图,以便更加清楚;
Loggers
是这些配置的一部分。如果您没有指定任何配置文件,则默认配置文件将使用它。您可以轻松扩展它,但是没有很好的API来禁用默认配置的一部分(希望很快添加;相应的API正在讨论阶段)。因此,您必须定义自己的配置文件,添加除记录器以外的所有默认配置部分,并将其传递给BenchmarkRunner
。然后,ConsoleLogger
将不会被使用。之后,您必须手动将摘要表和结论打印到控制台。此外,完整的日志和Markdown格式的摘要表将位于BenchmarkDotNet.Artifacts
文件夹中。var config = new ManualConfig();
config.Add(DefaultConfig.Instance.GetColumnProviders().ToArray());
config.Add(DefaultConfig.Instance.GetExporters().ToArray());
config.Add(DefaultConfig.Instance.GetDiagnosers().ToArray());
config.Add(DefaultConfig.Instance.GetAnalysers().ToArray());
config.Add(DefaultConfig.Instance.GetJobs().ToArray());
config.Add(DefaultConfig.Instance.GetValidators().ToArray());
config.UnionRule = ConfigUnionRule.AlwaysUseGlobal; // Overriding the default
var summary = BenchmarkRunner.Run<TestBench>(config);
var logger = ConsoleLogger.Default;
MarkdownExporter.Console.ExportToLog(summary, logger);
ConclusionHelper.Print(logger, config.GetCompositeAnalyser().Analyse(summary).ToList());
ConclusionHelper.Print(logger, summary.BenchmarksCases.**First()**.Config.GetCompositeAnalyser().Analyse(summary).ToList());
GetColumnProviders
等已经过时,我们应该使用AddColumnProvider
等函数。然而,简单的替换并不起作用。有什么想法吗?非常感谢。 - user1908746