You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

BenchmarkDotNet GlobalSetup异步未正确等待问题咨询

BenchmarkDotNet异步GlobalSetup未被正确等待的问题

我编写了如下基准测试类:

[GlobalSetup]
public async Task Setup()
{
    await Task.Delay(1000 * 10);

    Console.WriteLine("Got here...");
}

[Benchmark]
public async Task Benchmark()
{
   await OtherCode();
}

运行时发现OtherCode()在GlobalSetup完全执行完毕前就开始运行了。这是BenchmarkDotNet的Bug,还是我的用法有误?

我已在网上搜索相关内容,但大多是重复的无价值信息。

编辑1:
我找到GitHub上有一个类似的未解决问题,想问问是否有其他用户遇到过相同情况,你们的解决方案或规避方法是什么?

编辑2:
针对我的特定场景,我找到了一个略显粗糙的解决方法:将GlobalSetup中的代码提前计算并存储到静态字段中,再在基准测试类中引用。
需要说明的是,我是通过xunit运行该基准测试类,且运行器的作业配置中使用了InProcessEmitToolchain。
不过我仍好奇GlobalSetup未被正确等待的原因,这是计划修复的问题还是有意设计的?

内容的提问来源于stack exchange,提问作者Knight Steele

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 19:17:24