我有一个go测试文件,我在其中编写了一个基准测试函数,如下所示:func BenchmarkStuff(b *testing.B) { for i := 0; i < b.N; i++ { stuff() }}但是,该函数需要在每次运行之前进行一些设置,并在每次运行后进行清理。我有功能,分别这样做。但我不想对设置和清理功能进行基准测试。stuff()setup()cleanup()那么他们应该在哪里被调用呢?如果我在基准测试中调用它们,它们将被添加到结果测量中。但如果没有他们,就会失败。stuff()
1 回答
慕容森
TA贡献1853条经验 获得超18个赞
基准测试包提供重置计时器
、停止计时器
和启动计时器
方法,以避免基准测试所需的计时初始化。
如果需要初始化一次,请在开始循环之前使用:ResetTimer
func BenchmarkStuff(b *testing.B) {
setup()
b.ResetTimer()
for i := 0; i < b.N; i++ {
stuff()
}
}
如果需要在循环期间重新初始化,可以使用 和 来避免对该部分进行计时:StopTimerStartTimer
func BenchmarkStuff(b *testing.B) {
for i := 0; i < b.N; i++ {
b.StopTimer()
setup()
b.StartTimer()
stuff()
}
}
- 1 回答
- 0 关注
- 61 浏览
添加回答
举报
0/150
提交
取消