Бенчмарк: как запускать
Валидация имён при импорте списка сотрудников вдруг стала медленной, и никто не знал, с какого релиза. Миша перестал гадать и написал первый бенчмарк — цифру «до», чтобы после правки сравнить её с цифрой «после».
бенчмарк — функция BenchmarkXxx в _test.go с циклом по b.N; число итераций подбирает фреймворк, а запускается всё через go test -bench.
Форма бенчмарка
func BenchmarkValidateEmails(b *testing.B) {
for i := 0; i < b.N; i++ {
_ = validateEmails(emails)
}
}
Бенчмарк — функция в _test.go-файле, имя начинается с Benchmark. Цикл for i:= 0; i < b.N; i++ — обязательный каркас. Тебе не нужно самому решать, сколько раз гонять функцию: фреймворк подбирает b.N, увеличивая его, пока замер не стабилизируется.
Запуск
go test -bench=. -benchmem
-bench — регулярка по именам бенчмарков, . — все. -benchmem включает счёт аллокаций, без него будет только время. Бенчмарки живут в обычных тестовых файлах — и обычные тесты при -bench не запускаются, если не просить.
Когда бенчмарк уместен
Бенчмарк — микроизмерение: одна функция, изолированно. Он отвечает «насколько быстр этот кусок и стал ли быстрее после правки», а не «где тормозит сервис» — для этого профилировщик. До оптимизации меряют бенчмарком, чтобы иметь цифру «до».
Вы узнаете:
- как фреймворк подбирает число итераций b.N
- как запустить конкретный бенчмарк
Проверьте себя
Что такое бенчмарк в Go?
Как запустить бенчмарк со счётом аллокаций?
b.N — это константа?
правильных ответов
Бенчмарк: Benchmark-функция, цикл по b.N, go test -bench -benchmem. Микроизмерение изолированной функции — база для сравнений «до/после».
10 000 ₽ · 60 минут · онлайн