Как отслеживать бенчмарки Google Benchmark для C++ в CI

Everett Pompeii
Теперь, когда вы узнали как проводить бенчмаркинг C++ кода с помощью Google Benchmark, давайте посмотрим, как отслеживать эти бенчмарки в CI. Непрерывный бенчмаркинг — это практика запуска бенчмарков для каждого набора изменений, чтобы убедиться, что изменения не вводят регрессии производительности. Самый простой способ реализовать Непрерывный бенчмаркинг с бенчмарками Google Benchmark — использовать 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.
-
Запустите ваши тесты производительности с помощью
bencher run
подкоманды в вашем рабочем процессе CI, используя адаптерcpp_google
.
Шаги для Bencher Self-Hosted
- Создайте экземпляр Bencher Self-Hosted.
- Зарегистрируйте аккаунт на вашем экземпляре Bencher Self-Hosted.
- Создайте API токен и добавьте его в CI как секрет.
- Создайте рабочий процесс для вашего CI, например GitHub Actions или GitLab CI/CD.
- Установите Bencher CLI в ваш CI рабочий процесс. Убедитесь, что версия CLI соответствует версии вашего экземпляра Bencher Self-Hosted.
-
Запустите ваши бенчмарки с помощью
bencher run
подкоманды в вашем CI рабочем процессе, используя адаптерcpp_google
и указывая опцию--host
на URL вашего экземпляра Bencher Self-Hosted.
➕ C++ Google
Адаптер C++ Google (cpp_google
) ожидает вывод Google Benchmark в формате JSON (т.е. --benchmark_format=json
).
Измеряется latency
(т.е. наносекунды (ns)).
Доступно только среднее значение (т.е. value
). lower_value
и upper_value
отсутствуют.
bencher run --adapter cpp_google "make benchmarks --benchmark_format=json"
Отслеживайте свои бенчмарки в CI
Когда-либо ли у вас была регрессия производительности, повлиявшая на ваших пользователей? Bencher мог бы предотвратить это с помощью н kontinuierlichem Benchmarking.