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






