我正在尝试用参数对一个方法进行基准测试。
[Benchmark]
public void ViewPlan(int x)
{
//code here
}
在执行带有[BBenchmark]注释的代码时,我得到了一个错误"基准方法ViewPlan的签名不正确。方法不应该有任何参数"。因此,我也尝试将[Arguments]注释添加到该方法中。参考链接:https://benchmarkdotnet.org/articles/samples/IntroArguments.html
[Benchmark]
[Arguments]
public void ViewPlan(int x)
{
//code here
}
在这个[Arguments]中,我们还需要为方法指定参数的值。然而,当调用该功能时,x的值是动态设置的。有什么方法可以在[Arguments]中动态传递参数值吗?我们还可以对静态方法进行基准测试吗?如果是,那么怎么做?
我为您举了一个例子。看看它是否符合你的需求。
public class IntroSetupCleanupIteration
{
private int rowCount;
private IEnumrable<object> innerSource;
public IEnumerable<object> Source => this.innerSource;
[IterationSetup]
public void IterationSetup()
{
// retrieve data or setup your grid row count for each iteration
this.InitSource(42);
}
[GlobalSetup]
public void GlobalSetup()
{
// retrieve data or setup your grid row count for every iteration
this.InitSource(42);
}
[Benchmark]
[ArgumentsSource(nameof(Source))]
public void ViewPlan(int x)
{
// code here
}
private void InitSource(int rowCount)
{
this.innerSource = Enumerable.Range(0,rowCount).Select(t=> (object)t).ToArray(); // you can also shuffle it
}
}
我不知道你是如何设置数据的。对于每个迭代或每次迭代一次,所以我包括两个设置。