C#-BenchmarkDotNet的仅显示摘要部分
作者:互联网
我正在对一些.net框架进行基准测试,正在使用.net框架,C#和BenchmarkDotNet
我想做的是我正在编写许多基准测试,并且只对报告的摘要部分感兴趣.如何配置BenchmarkDotNet仅显示测试的摘要部分?
这是一个更清晰的屏幕截图;
解决方法:
为什么要跳过日志?基准测试可能会花费很多时间,如果禁用日志,您将在黑屏上看到一段时间.如果出现问题,那么您将一无所知.
但是,有一种解决方法. BenchmarkDotNet使用特殊的Configs进行自定义.记录器是这些配置的一部分.如果您未指定任何配置,则将使用默认配置.您可以轻松地对其进行扩展,但是没有很好的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());
标签:benchmarking,c,benchmarkdotnet 来源: https://codeday.me/bug/20191026/1934722.html