我正在尝试对需要昂贵准备工作的操作进行基准测试,我将使用 StopTimer() 和 StartTimer() 排除在外。具体来说,我正在对第 n 个项目插入排序列表进行基准测试。
示例代码:
n := 100
// Run the process b.N times
for 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?我自己在文档中没有找到任何内容。
噜噜哒
蛊毒传说
相关分类