首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >只显示BenchmarkDotNet的汇总部分

只显示BenchmarkDotNet的汇总部分
EN

Stack Overflow用户
提问于 2017-02-27 15:25:19
回答 2查看 2.5K关注 0票数 9

我正在对一些.net框架内容进行基准测试,我正在使用.net框架、C#和BenchmarkDotNet

我想要做的是,我编写了很多基准测试,我只对报告的摘要部分感兴趣。如何将BenchmarkDotNet配置为只显示测试的摘要部分?

这里有一个截图要更清楚;

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-27 17:58:36

你为什么要跳过日志?基准测试可能需要很长时间,如果禁用日志,您将查看一段时间的黑色屏幕。如果出了问题,你就不会知道。

然而,有一个解决办法。BenchmarkDotNet使用特殊的配置进行定制。Loggers是这些Con图的一部分。如果不指定任何配置,默认配置将使用它。您可以轻松地扩展它,但是没有一个很好的API来禁用默认配置的一部分(希望很快就会添加;相应的API现在正处于讨论阶段)。因此,您必须定义自己的配置,添加除记录器之外的默认配置的所有部分,并将其传递给BenchmarkRunner。这样就不会使用ConsoleLogger了。之后,您必须手动打印汇总表和结论以供控制台使用。此外,标记格式的完整日志和汇总表将位于BenchmarkDotNet.Artifacts文件夹中。

源代码:

代码语言:javascript
复制
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());
票数 4
EN

Stack Overflow用户

发布于 2019-12-20 09:27:18

AndreyAkinshin回答者真的很棒,但是有一部分不再有效了!ImmutableConfig不再提供.GetCompositeAnalyser(),所以您必须获得ManualConfig,这是形成BenchmarksCase的唯一可能

例如,如果您只运行一个Benchmarkcase:您可以使用...First()执行此操作。

这个帮我修好了

代码语言:javascript
复制
ConclusionHelper.Print(logger, summary.BenchmarksCases.**First()**.Config.GetCompositeAnalyser().Analyse(summary).ToList());
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42489457

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档