gpt4 book ai didi

c# - 我们如何在 C# 中为 BenchmarkDotNet 的 [Arguments] 标记传递动态参数?

转载 作者:行者123 更新时间:2023-12-02 03:06:08 26 4
gpt4 key购买 nike

我正在尝试使用参数对方法进行基准测试。

[Benchmark]
public void ViewPlan(int x)
{
//code here
}

在使用 [Benchmark] 注释执行代码时,我得到了一个错误“基准方法 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
}
}

我不知道你是如何设置你的数据的。对于每次迭代或每次迭代一次,所以我包括这两种设置。

关于c# - 我们如何在 C# 中为 BenchmarkDotNet 的 [Arguments] 标记传递动态参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58972840/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com