Что такое benchmark в Go?

Middle
871 просмотров
AFK Offer AI

Бенчмарки измеряют производительность. Функция 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() — включить подсчёт аллокаций.

Следующий вопрос

Сколько байт занимает map?