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