我正在嘗試使用Go軟件包「時間」來對我的程序中的函數進行基準測試。一直在四處搜索,而人們似乎使用time.NanoSeconds() - 但我認爲這個函數已經不在時間包中了?使用StopWatch或類似的基準測試代碼
我需要的是啓動和停止計時器,並打印出值的簡單方法。
我正在嘗試使用Go軟件包「時間」來對我的程序中的函數進行基準測試。一直在四處搜索,而人們似乎使用time.NanoSeconds() - 但我認爲這個函數已經不在時間包中了?使用StopWatch或類似的基準測試代碼
我需要的是啓動和停止計時器,並打印出值的簡單方法。
使用testing包你* _test.go內的現有功能:
func BenchmarkMyFunc(b *testing.B) {
for i := 0; i < b.N; i++ {
myBecnhmarkedFunction()
}
}
,並調用go test -bench RE
(RE是一個正則表達式來選擇長椅,像B
因爲它意味着*B*
)通常在包裝內/工具目錄
或明確從代碼中的任何地方 - 使用Benchmark功能。
感謝您的回答!就在我閱讀你的回覆之前,我發現了一個簡單的例子,說明如何使用Go的時間包,這對我來說已經足夠了。我也將看看基準測試功能。 'T0:= time.Now()expensiveCall()T1:= time.Now()fmt.Printf( 「調用了%V運行\ n」,t1.Sub(T0))' – shaz 2012-04-06 20:04:40
這種方法對於'expensiveCall()'執行足夠長的時間是足夠的/好的/足夠精確的,就像機器時間分辨率的數量級的倍數一樣。測試包可以通過自適應地更改b.N參數來處理納秒精確的定時。 – zzzz 2012-04-06 20:14:16
@shaz你也可以使用time.Since:t0:= time.Now(); expensiveCall(); println(「Time:」,time.Since(t0)) – BurntSushi5 2012-04-06 22:38:10
我相信現在的功能等同於'time.Now()。UnixNano()'。 – Ashe 2012-04-06 22:56:46