Ответ
Бенчмарки являются частью этапа тестирования и выполняются после компиляции кода. Типичный пайплайн выглядит так:
Статический анализ (Linting): Инструменты вроде
go vet
илиgolangci-lint
проверяют исходный код на наличие ошибок, стилистических несоответствий и потенциальных проблем. Этот этап работает с исходным кодом, до компиляции.Сборка (Compilation): Команда
go build
компилирует исходный код в исполняемый бинарный файл.Тестирование (Testing): Этот этап запускается командой
go test
и включает в себя:- Юнит-тесты: Проверяют корректность логики. Они выполняются в первую очередь.
- Бенчмарки: Запускаются с флагом
-bench
(например,go test -bench .
). Они измеряют производительность (скорость выполнения, аллокации памяти) уже скомпилированного кода. Это важно, чтобы на результаты не влияло время самой компиляции.
Таким образом, бенчмарки — это инструмент для измерения производительности, который применяется к скомпилированному приложению на этапе его тестирования.
Пример бенчмарка:
func BenchmarkSum(b *testing.B) {
// b.N подбирается автоматически для получения статистически значимого результата
for i := 0; i < b.N; i++ {
Sum(1, 2)
}
}