Бенчмарки измеряют производительность. Функция BenchmarkXxx(b *testing.B) в *_test.go:
func BenchmarkConcat(b *testing.B) {
for i := 0; i < b.N; i++ {
_ = "hello" + " " + "world"
}
}
func BenchmarkBuilder(b *testing.B) {
for i := 0; i < b.N; i++ {
var sb strings.Builder
sb.WriteString("hello")
sb.WriteString(" ")
sb.WriteString("world")
_ = sb.String()
}
}
Запуск:
go test -bench=. -benchmem
# BenchmarkConcat-8 50000000 23.4 ns/op 16 B/op 1 allocs/op
# BenchmarkBuilder-8 30000000 45.2 ns/op 64 B/op 2 allocs/op
b.N подбирается автоматически для стабильных результатов. -benchmem показывает аллокации. b.ResetTimer() — сбросить таймер после setup. b.ReportAllocs() — включить подсчёт аллокаций.