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
相关产品推荐
相关产品推荐

