使用BenchmarkDotNet遇超时错误,求助延长超时时间
解决BenchmarkDotNet的2分钟超时问题
你遇到的2分钟超时是BenchmarkDotNet的全局进程超时限制,默认值为2分钟,这个设置独立于你配置的迭代时间、预热次数等参数。要解决这个问题,需要在Job配置中显式覆盖超时设置:
代码配置方式
在你的Job构建链中添加.WithTimeout()方法,指定更长的超时时间,比如设置为2小时:
Job net7WindowsJob = Job.Default .WithToolchain(CsProjCoreToolchain.From(new NetCoreAppSettings("net7.0-windows", null, ".NET 7.0 Windows"))) .WithWarmupCount(5) // 建议替换int.MaxValue为合理值,避免无限预热 .WithIterationTime(TimeInterval.FromHours(1)) .WithMaxIterationCount(10) // 建议替换int.MaxValue为合理值,避免无限迭代 .WithTimeout(TimeSpan.FromHours(2)); // 这里设置自定义超时时间
关键说明
WithTimeout()设置的是整个基准测试进程的最大运行时长,覆盖默认的2分钟限制。- 你当前设置的
WarmupCount(int.MaxValue)和MaxIterationCount(int.MaxValue)会导致测试无限运行,即使延长超时也不会自动停止,建议根据实际测试需求调整为具体数值(比如预热5次、最大迭代10次)。 - 如果你的单轮迭代确实需要1小时,确保超时时间大于迭代时间+预热时间的总和,避免中途被终止。
内容的提问来源于stack exchange,提问作者José Luis Rueda Montejo
相关产品推荐
相关产品推荐

