在 go 中創建自定義函數基準測試性能基準測試:使用 testing 包提供的 b 類型創建自定義函數。在函數中使用 b 類型的 record 方法度量執行時間。使用 go test -bench . -benchmem 命令運行基準測試。通過自定義基準測試函數,可以識別和改進 go 應用程序的性能。
Go 語言中自定義函數的性能基準測試
性能基準測試對于識別和改進 Go 應用程序至關重要。通過基準測試,您可以度量特定代碼塊的執行時間,并根據此信息進行優化。
創建自定義基準測試函數
要在 Go 中創建自定義基準測試函數,請使用 testing
包提供的 B
類型。B
類型提供了用于度量和報告基準結果的方法。
import "testing" // BenchmarkAddNumbers 為添加 numbers 切片中數字的函數提供基準測試。 func BenchmarkAddNumbers(b *testing.B) { numbers := []int{1, 2, 3, 4, 5} for i := 0; i < b.N; i++ { sum := 0 for _, number := range numbers { sum += number } } }
登錄后復制
用法
要運行基準測試,請使用 go test -bench
命令:
go test -bench . -benchmem
登錄后復制
實戰案例
讓我們通過一個實戰案例來說明如何使用自定義基準測試函數優化代碼。
func AddNumbers(numbers []int) int { sum := 0 for _, number := range numbers { sum += number } return sum }
登錄后復制
通過運行基準測試,我們發現 AddNumbers
函數的性能緩慢。
go test -bench . -benchmem BenchmarkAddNumbers-8 300000000 4.44 ns/op 0 B/op 0 allocs/op
登錄后復制
我們可以通過使用 sum
內置函數優化此函數:
func AddNumbersOptimized(numbers []int) int { return sum(numbers) }
登錄后復制
運行基準測試以驗證優化后的函數:
go test -bench . -benchmem BenchmarkAddNumbers-8 2000000000 0.57 ns/op 0 B/op 0 allocs/op BenchmarkAddNumbersOptimized-8 3000000000 0.68 ns/op 0 B/op 0 allocs/op
登錄后復制
如你所見,優化后的函數 AddNumbersOptimized
的性能顯著提高。