Загрузка…
Загрузка…
Go · junior · сложность 2
Benchmarking в Go — это измерение производительности кода (время, выделение ресурсов, пропускная способность) в контролируемых условиях для сравнения реализаций и проверки эффекта оптимизации.
Функции имеют вид: func BenchmarkXxx(b *testing.B).
Запуск базы: go test -bench=.
Только конкретный ориентир: go test -bench=BenchmarkParse.
Мера распределения: go test -bench=. -benchmem
testing.B:Бегун сам выбирает b.N (количество итераций), чтобы получить стабильное измерение.
Ваш код в тестовой функции выполняется в формате for i := 0; я < б.Н; я++ цикл.
В результате тест оценивает производительность по ns/op, а также по -benchmem.
B/op, allocs/op.
b.ResetTimer:Сбросьте накопленный таймер измерений.
Не учитывается код подготовки, выполненный перед вызовом ResetTimer в
последний раз.
Используется после этапа настройки для измерения только «чистой» рабочей части.
b.StopTimer() / b.StartTimer() — временно отключить/включить хронометраж.
b.ReportAllocs() — статистика распределения сил.
Бенчмарк в Go — это не разовый запуск, а инструмент сравнения в одинаковых условиях. testing.B автоматически масштабирует итерации, а b.ResetTimer отделяет обучение от фактического измерения производительности.
func BenchmarkParse(b *testing.B) {
input := []byte(`{"x":1}`)
b.ResetTimer()
for i := 0; i < b.N; i++ {
var v map[string]int
_ = json.Unmarshal(input, &v)
}
}Benchmarking в Go — это измерение производительности кода (время, выделение ресурсов, пропускная способность) в контролируемых условиях для сравнения реализаций и проверки эффекта оптимизации.