BenchmarkDotNet-如何在类外部注入参数



我正在使用BenchmarkDotNet库进行性能检查,我想注入使用基准类时的参数。类似这样的东西:

public class Program
{
public static void Main()
{
var benchmark1 = new BenchmarkWithParameter(100);
BenchmarkRunner.Run(benchmark1);
var benchmark2 = new BenchmarkWithParameter(200);
BenchmarkRunner.Run(benchmark2);
}
}
public class BenchmarkWithParameter
{
public BenchmarkWithParameter(int waitTime)
{
WaitTime = waitTime;
}
public int WaitTime { get; }
[Benchmark]
public void Run()
{
Thread.Sleep(WaitTime);
}
}

有办法实现吗?

我知道我可以使用ParamsParamsSourceArgumentsSource属性,但这意味着我需要为每次参数更改更改基准类,而不是注入不同的参数。

我的主要目标是编写一次基准类,并使用不同的参数多次使用它。

很抱歉,但到今天为止,这是不可能的。

库的设计受到以下事实的限制:为了避免以前执行的基准测试的副作用,我们在一个独立的过程中运行每个基准测试。为了做到这一点,我们为每个基准生成并编译一个新项目。编译限制了我们以已知的方式提供参数/自变量。

此处介绍了所有可用选项:https://benchmarkdotnet.org/articles/features/parameterization.html

相关内容

  • 没有找到相关文章

最新更新