首页 > 解决方案 > 使用 BenchmarkDotnet 摆脱默认导出器

问题描述

根据文档BenchmarkDotnet 的默认导出器是:csv、html 和 markdown。

我可以看到如何添加我自己的导出器,但我可以看到如何摆脱默认导出器。

如果没有办法做到这一点,出口商的运行顺序是否得到保证?换句话说,我的附加导出器是否可以保证在默认导出器之后运行?

标签: c#benchmarkdotnet

解决方案


我怎样才能摆脱默认的出口商

如果您不想要默认设置,则需要创建一个空配置并以显式方式添加您需要的所有内容。将结果打印到控制台的最小配置:

var config = ManualConfig.CreateEmpty()
    .AddColumnProvider(DefaultColumnProviders.Instance)
    .AddLogger(ConsoleLogger.Default);

// here you can add your exporter by using config.AddExporter()
// and pass it to BenchmarkRunner or BenchmarkSwitcher

我创建了一个 PR,它将在下一个版本中变得更容易:https ://github.com/dotnet/BenchmarkDotNet/pull/1582

如果您发现当前解决方案过于复杂,请随时在 BDN 存储库中创建问题并提出新的 API|解决方案。

出口商的运行顺序是否得到保证?

保证按依赖项要求排序:

https://github.com/dotnet/BenchmarkDotNet/blob/81c234d11cab1b3beb0e60cf0f5c4c92e60a41e6/src/BenchmarkDotNet/Configs/ImmutableConfigBuilder.cs#L117

一个例子是RPlot依赖于让CSV出口商首先完成工作的出口商:

https://github.com/dotnet/BenchmarkDotNet/blob/27887d4b612312c74c63c0c3220351f8db8e81e4/src/BenchmarkDotNet/Exporters/RPlotExporter.cs#L22-L26


推荐阅读