1. Benchmark,是GO語言用來做函數的效能測試。
2. Go語言對效能測試函數的名稱與函數的參數有什麼規定?
a. 對於效能測試函數,其名稱必須以Benchmark為開頭,並且參數只有一個 *testing.B類型的參數。
b. 檔案名稱必須要以"_test"為結尾。
c. 函數格式範例:
func BenchmarkXXX(b *testing.B) {
//與性能測試無關的code
b.ResetTimer()
for i := 0; i < b.N; i++ {
//測試的code
}
b.StopTimer()
//與性能測試無關的code
}
3. 如何解釋效能測試的測試結果?
程式碼範例:(需要可以運行go test -bench)
package main
import (
"testing"
)
func Add(x, y int) int {
return x + y
}
func BenchmarkAdd(b *testing.B) {
b.ResetTimer()
for i := 0; i < b.N; i++ {
Add(3, 5)
}
b.StopTimer()
}
windows和amd64,是作業系統、位元數。
BenchmarkAdd-8 => CPU的核心數。
1000000000 => 執行次數。
0.302 ns/op => 執行一次花費的時間。
4. 效能測試函數中的計時器,做什麼用?
StartTimer、StopTimer、ResetTimer是專屬於效能測試的計時器。
分別的意思是,開始紀錄、停止紀錄、重新紀錄執行時間。
使用這幾個函數,可以避免for迴圈之外的程式碼干擾到效能測試的計算。
5. 簡易使用指令
go test -bench=. //運行資料夾下全部的benchmark
go test -bench=. -benchmem