如何移除或跳过BenchmarkDotNet中的DefaultJob?
解决BenchmarkDotNet中ManualConfig自动添加DefaultJob的问题
方法一:直接移除DefaultJob
用ManualConfig.CreateEmpty()创建空配置后,直接调用Remove方法剔除默认的DefaultJob,配置里就只会保留你自定义的Job,不会触发Release配置的检查。示例代码:
var config = ManualConfig.CreateEmpty() .AddJob(YourCustomJob) // 替换为你的自定义Job实例 .Remove(DefaultJob.Instance);
方法二:实现IConfig接口完全自定义
如果上述方法仍有问题,可以直接实现IConfig接口,完全掌控配置内容,确保DefaultJob不会被加入。示例代码:
public class CustomBenchmarkConfig : IConfig { // 仅返回你的自定义Job,完全排除DefaultJob public IEnumerable<Job> Jobs => new List<Job> { YourCustomJob }; // 以下根据需求配置其他组件,不需要的返回空集合即可 public IEnumerable<IColumnProvider> ColumnProviders => Enumerable.Empty<IColumnProvider>(); public IEnumerable<ILogger> Loggers => Enumerable.Empty<ILogger>(); public IEnumerable<IExporter> Exporters => Enumerable.Empty<IExporter>(); public IEnumerable<IValidator> Validators => Enumerable.Empty<IValidator>(); public IEnumerable<IDiagnoser> Diagnosers => Enumerable.Empty<IDiagnoser>(); public IEnumerable<IJobMutator> JobMutators => Enumerable.Empty<IJobMutator>(); public bool HasBenchmarksValidator => false; public ConfigUnionRule UnionRule => ConfigUnionRule.AlwaysUseLocal; }
额外注意事项
- 自定义Job时,要把
Configuration属性设置为你的Benchmarks编译配置,避免环境不匹配的问题 - 如果Visual Studio智能提示仍异常,建议删除项目的
bin和obj文件夹,清理缓存后重新加载项目
内容的提问来源于stack exchange,提问作者Kevin-Duel Trimble
相关产品推荐
相关产品推荐

