我有一個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 關注
- 73 瀏覽
添加回答
舉報
0/150
提交
取消