Обзор Бенчмаркинга


Большинство результатов бенчмарков являются эфемерными. Они исчезают, как только ваш терминал достигает предела прокрутки. Некоторые инструменты для выполнения бенчмарков позволяют кэшировать результаты, но большинство из них делают это только локально. Bencher позволяет отслеживать ваши бенчмарки как из локальных, так и из CI-запусков и сравнивать их с историческими результатами.

Самый простой способ отслеживать ваши бенчмарки — это подкоманда CLI bencher run. Она оборачивает вывод вашего существующего инструмента для выполнения бенчмарков и генерирует Отчет. Этот Отчет затем отправляется на сервер Bencher API, где вывод инструмента для выполнения бенчмарков анализируется с использованием адаптера инструмента для выполнения бенчмарков. Адаптер инструмента для выполнения бенчмарков обнаруживает все присутствующие Бенчмарки и соответствующие им Метрики. Эти Бенчмарки и Метрики затем сохраняются вместе с Отчетом. Если установлен Порог, то новые Метрики сравниваются с историческими Метриками для каждого Бенчмарка, присутствующего в Отчете. Если обнаруживается регрессия, будет сгенерировано Уведомление.

Отныне мы будем называть ваши “бенчмарки” “тестами регрессии производительности”, чтобы избежать путаницы.

Benchmark

Бенчмарк — это именованный тест на регрессию производительности. Если тест на регрессию производительности новый для Bencher, то бенчмарк создается автоматически. В противном случае, имя теста на регрессию производительности используется как уникальный идентификатор для бенчмарка.

Будьте осторожны при изменении имени ваших тестов на регрессию производительности. Вам нужно будет вручную переименовать бенчмарк в Bencher, чтобы он соответствовал новому имени. В противном случае переименованный тест на регрессию производительности будет считаться новым бенчмарком. Это же предупреждение также относится к перемещению некоторых тестов на регрессию производительности. В зависимости от библиотек тестирования, путь к тесту на регрессию производительности может быть частью его имени.

Единственное исключение из приведенного выше предупреждения — это игнорирование бенчмарка. См. подавление оповещений для полного обзора.

Метрика

Метрика — это единичный результат теста регрессии производительности в момент времени. Для одной Метрики могут быть собраны до трех Значений: value, lower_value и upper_value. value является обязательным для всех Метрик, в то время как lower_value и upper_value являются независимо необязательными. Какие Значения собираются, определяется адаптером оболочки бенчмаркинга.

Измерение

Измерение — это единица измерения для Метрики. По умолчанию все Проекты начинаются с Измерения Latency и Throughput с единицами измерения наносекунды (ns) и операции / секунда (ops/s) соответственно. Измерение определяется адаптером тестовой платформы.


Отчет

Отчет представляет собой набор Контрольных показателей и их Метрик для определенной Ветки и Испытательного стенда. Отчеты чаще всего генерируются с использованием подкоманды CLI bencher run. Смотрите как отслеживать регрессионные тесты производительности для полного обзора.

Ветка

Ветка — это ссылка git, используемая при запуске Отчета (например, имя ветки или тег). По умолчанию все проекты начинаются с Ветки main. При использовании подкоманды CLI bencher run, main является веткой по умолчанию, если другая не указана. См. выбор ветки для полного обзора.

Головная часть

Головная часть ветки — это самая последняя версия ветки. Она ссылается на самую последнюю начальную точку, если таковая имеется. Каждый раз, когда ветка получает новую начальную точку, она получает новую головную часть. См. полный обзор в разделе выбор ветки.

Начальная точка

Ветка может иметь начальную точку. Начальная точка — это другая ветка на определенной версии (и git хэш, если доступно). Исторические метрики и, по желанию, пороговые значения копируются из начальной точки. См. выбор ветки для полного обзора.

Testbed

Testbed — это название тестовой среды, используемой при запуске отчета. По умолчанию все проекты начинаются с Testbed localhost. При использовании подкоманды CLI bencher run, localhost является Testbed по умолчанию, если явно не указано другое.


Порог

Порог используется для выявления регрессий производительности. Порог назначается уникальной комбинации: ветки, тестовой среды и показателя. Смотрите полный обзор в разделе пороги.

Тест

Тест используется Порогом для обнаружения ухудшений производительности. Комбинация Теста и его параметров называется Модель. Смотрите пороги для полного обзора.

Модель

Модель — это сочетание теста и его параметров для порога. Модель должна иметь нижнюю границу, верхнюю границу или обе.

  • Нижняя граница
    • Нижняя граница используется, когда меньшее значение указывает на ухудшение производительности, как, например, с метрикой пропускная способность.
  • Верхняя граница
    • Верхняя граница используется, когда большее значение указывает на ухудшение производительности, как, например, с метрикой задержка.

Каждая граница используется для вычисления предельного значения границы. Затем каждая новая метрика проверяется на соответствие каждому предельному значению границы. Оповещение генерируется, когда новая метрика ниже нижнего предельного значения или выше верхнего предельного значения. Смотрите пороги для полного обзора.

Предел границы

Предел границы — это значение, рассчитанное на основе нижней или верхней границы. Он используется для сравнения с новой метрикой. Оповещение генерируется, когда новая метрика ниже нижнего предела или выше верхнего предела. Смотрите пороги для полного обзора.

Предупреждение

Предупреждение создается, когда новый Метрика не проходит Тест, находясь ниже Нижнего Предела или выше Верхнего Предела. Подробный обзор см. в разделе пороги.



🐰 Поздравляем! Вы узнали все о слежении за тестами регрессии производительности! 🎉


Продолжайте: Подкоманда CLI bencher run

🤖 Этот документ был автоматически создан OpenAI GPT-4. Оно может быть неточным и содержать ошибки. Если вы обнаружите какие-либо ошибки, откройте проблему на GitHub.


Published: Sat, August 12, 2023 at 4:07:00 PM UTC | Last Updated: Thu, October 10, 2024 at 7:50:00 AM UTC