2 回答

TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超8個(gè)贊
您不是在測量test()運(yùn)行時(shí)間,而是在測量使用go test().
您需要等待 goroutine(s) 完成,例如使用sync.Waitgroup。
// somewhere in your main package
var wg sync.WaitGroup
func test() {
// first lines in test() should be
wg.Add(1)
defer wg.Done()
...
}
// benchmark
runtime.GOMAXPROCS(1)
var t1 = time.Now()
go test()
wg.Wait()
var elapsed1 = time.Since(t1)

TA貢獻(xiàn)1845條經(jīng)驗(yàn) 獲得超8個(gè)贊
您正在嘗試對如此小的東西進(jìn)行基準(zhǔn)測試,以至于測量誤差占主導(dǎo)地位。您的基準(zhǔn)測試迭代應(yīng)該進(jìn)行調(diào)整,直到基準(zhǔn)測試功能持續(xù)足夠長的時(shí)間才能可靠地計(jì)時(shí)。您的基準(zhǔn)測試應(yīng)該運(yùn)行大約一秒鐘才能有意義。
- 2 回答
- 0 關(guān)注
- 182 瀏覽
添加回答
舉報(bào)