🟡 Средний · 2 очк. Профилирование и оптимизация
Зачем в бенчмарке вызывать b.ResetTimer() и b.ReportAllocs()?
A ResetTimer исключает время подготовки из замера; ReportAllocs включает отчет по аллокациям
B Они ускоряют выполнение бенчмарка
C ResetTimer перезапускает таймер между итерациями; ReportAllocs отключает аллокации
D Нужны только для бенчмарков с субтестами
Объяснение вопроса

b.ResetTimer() сбрасывает счетчики времени и аллокаций. Вызывается после подготовки данных, чтобы в отчет вошли только итерации цикла.

func BenchmarkFoo(b *testing.B) {
    data := prepareHugeSlice()
    b.ResetTimer()
    for i := 0; i < b.N; i++ {
        doSomething(data)
    }
}

b.ReportAllocs() включает отчет по аллокациям на итерацию (allocs/op и B/op).

🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.