Как отслеживать время компиляции Rust в CI
Everett Pompeii
Время компиляции может составлять значительную часть времени сборки, особенно в Rust. Непрерывное бенчмаркинг — это практика запуска бенчмарков на каждом наборе изменений, чтобы убедиться, что изменения не вызывают ухудшения производительности. Вы можете рассматривать время компиляции как бенчмарк и отслеживать его в CI, чтобы обнаруживать медленное время компиляции. Самый простой способ реализовать непрерывный бенчмаркинг для времени компиляции Rust — использовать Bencher.
Что такое Bencher?
Bencher - это набор инструментов для непрерывного тестирования производительности. Когда-нибудь регрессия производительности влияла на ваших пользователей? Bencher мог бы предотвратить это. Bencher позволяет вам обнаруживать и предотвращать регрессии производительности до того, как они попадут в продакшн.
- Запустить: Запустите свои тесты производительности локально или в CI, используя ваши любимые инструменты для этого. CLI
bencher
просто оборачивает ваш существующий аппарат тестирования и сохраняет его результаты. - Отслеживать: Отслеживайте результаты ваших тестов производительности со временем. Мониторите, запрашивайте и строите графики результатов с помощью веб-консоли Bencher на основе ветки исходного кода, испытательного стенда и меры.
- Поймать: Отлавливайте регрессии производительности в CI. Bencher использует инструменты аналитики, работающие по последнему слову техники, чтобы обнаружить регрессии производительности, прежде чем они попадут в продакшн.
По тем же причинам, по которым модульные тесты запускаются в CI, чтобы предотвратить регрессии функций, тесты производительности должны быть запущены в CI с Bencher, чтобы предотвратить регрессии производительности. Ошибки производительности – это тоже ошибки!
Шаги для Bencher Cloud
- Создайте учетную запись Bencher Cloud.
- Создайте API-токен и добавьте его в ваш CI как секрет.
- Создайте рабочий процесс для вашего CI, как GitHub Actions или GitLab CI/CD.
- Установите Bencher CLI в вашем рабочем процессе CI.
-
Скомпилируйте ваш Rust код с помощью подкоманды
bencher run
в вашем CI процессе, используя флаг--build-time
с адаптеромjson
.
Шаги для Bencher Self-Hosted
- Создайте экземпляр Bencher Self-Hosted.
- Зарегистрируйте аккаунт на вашем экземпляре Bencher Self-Hosted.
- Создайте API токен и добавьте его в CI как секрет.
- Создайте рабочий процесс для вашего CI, например GitHub Actions или GitLab CI/CD.
- Установите Bencher CLI в ваш CI рабочий процесс. Убедитесь, что версия CLI соответствует версии вашего экземпляра Bencher Self-Hosted.
-
Скомпилируйте ваш Rust код с помощью подкоманды
bencher run
в вашем CI процессе, используя флаг--build-time
с адаптеромjson
и установкой опции--host
на URL вашей локальной инстанции Bencher.
⏱️ Build Time
Команда bencher run
CLI
может быть использована для отслеживания времени сборки (то есть времени компиляции) ваших сборок с помощью флага --build-time
.
Под капотом, bencher run
выводит результаты в формате Bencher Metric Format (BMF) JSON.
Поэтому хорошей практикой будет явное использование адаптера json
.
Для получения дополнительной информации смотрите как отслеживать время сборки.
Собирается измерение build-time
(то есть seconds (s)
).
Доступно только значение времени сборки (то есть value
).
Ни lower_value
, ни upper_value
не собираются.
Измерение build-time
не создается по умолчанию для всех Проектов.
Однако, когда вы используете флаг --build-time
, это измерение будет автоматически создано для вашего Проекта.
Track your benchmarks in CI
Have you ever had a performance regression impact your users? Bencher could have prevented that from happening with continuous benchmarking.