为了账号安全,请及时绑定邮箱和手机立即绑定

是否可以限制 Go 基准测试中的迭代次数 (bN)?

是否可以限制 Go 基准测试中的迭代次数 (bN)?

Go
吃鸡游戏 2023-05-08 16:15:02
我正在尝试对需要昂贵准备工作的操作进行基准测试,我将使用 StopTimer() 和 StartTimer() 排除在外。具体来说,我正在对第 n 个项目插入排序列表进行基准测试。示例代码:n := 100// Run the process b.N timesfor i := 0; i < b.N; i++ {    // Stop the timer for our expensive preparation work (inserting n-1 items)    b.StopTimer()    // ...    // Insert n-1 items    for j := 1; j < n; j++ {        m.InsertItem(o)    }    // ...    // Resume the timer    b.StartTimer()    // Insert the nth item    m.InsertItem(o)}问题是 Go 的基准测试启发式是根据基准时间而不是总时间来限制 bN 的。它最终要求第 100 次插入的 5MM(5000000)次迭代,这花费了比合理时间更多的时间(我想以第 1000 万次项目插入为基准)。有没有办法在 Go 的基准测试工具中为特定的基准指定最大 bN?我自己在文档中没有找到任何内容。
查看完整描述

2 回答

?
噜噜哒

TA贡献1784条经验 获得超7个赞

设置显式迭代计数(100 次):

go test -bench=. -benchtime=100x

指定时间(10 秒):

go test -bench=. -benchtime=10s

b.N在 Go Benchmarking 中限制迭代次数 ( ):
从Go 1.12开始:

-benchtime标志现在支持设置显式迭代计数,而不是值以“x”结尾的时间。例如,-benchtime=100x运行基准测试 100 次。


查看完整回答
反对 回复 2023-05-08
?
蛊毒传说

TA贡献1895条经验 获得超3个赞

-benchtime标志可用于指定要运行基准测试的时间 ( source )。虽然我还没有尝试过,但提供低于 1 秒的时间值应该可以解决问题。

go test -bench=. -benchtime=10s


查看完整回答
反对 回复 2023-05-08
  • 2 回答
  • 0 关注
  • 102 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信