Как использовать Bencher для отслеживания бенчмарков


Самый простой способ отслеживания ваших бенчмарков - это подкоманда CLI bencher run. Смотрите обзор бенчмаркинга для более глубокого понимания. Это пример подкоманды CLI bencher run для отслеживания бенчмарков на особенно названной ветке feature-branch:

bencher run \
--project save-walter-white \
--token eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhdWQiOiJjbGllbnQiLCJleHAiOjE2NzQwNjA3NTAsImlhdCI6MTY3MTQ2ODc1MCwiaXNzIjoiYmVuY2hlci5kZXYiLCJzdWIiOiJzYXVsQGJldHRlcmNhbGxzYXVsLmNvbSIsIm9yZyI6bnVsbH0.CABcvWlPobAHs7wsdR6wX5p0R2jaCd7RmpsnMp5pwEc \
--adapter json \
--if-branch feature-branch \
--else-if-branch main \
--else-branch \
--testbed localhost \
--err \
"bencher mock"`
  1. Проект должен уже существовать. Установите флаг --project или переменную среды BENCHER_PROJECT в идентификатор проекта или UUID. (например: --project save-walter-white)
  2. Токен API уже должен существовать. Установите флаг --token или переменную окружения BENCHER_API_TOKEN в токен API. (например: --token ...)
  3. Опционально: установите флаг --adapter или переменную окружения BENCHER_ADAPTER на желаемое имя адаптера. Если это не установлено, то будет использован адаптер magic. Смотрите адаптеры для установки бенчмарков для полного обзора. (например: --adapter json)
  4. Есть несколько вариантов для установки ветки проекта. Смотрите выбор ветки для полного обзора.
    1. Используйте текущую ветку, если она уже существует. (например: --if-branch feature-branch)
    2. Создайте клон данных целевой ветки, если он уже существует. (например: --else-if-branch main)
    3. В противном случае, создайте новую ветку с именем, указанным в --if-branch, которое будет feature-branch. (например: --else-branch)
  5. Опционально: установите флаг --testbed или переменную окружения BENCHER_TESTBED в идентификатор тестового стенда или UUID. Тестовый стенд уже должен существовать. Если это не установлено, то будет использован стандартный тестовый стенд localhost. (например: --testbed localhost)
  6. Установите команду на неудачу, если будет сгенерировано предупреждение. Чтобы предупреждение было сгенерировано, Порог уже должен существовать. (например: --err)
  7. Запустите свои бенчмарки и сгенерируйте отчет из результатов. (например: "bencher mock")

Относительный Бенчмаркинг

Относительный бенчмаркинг выполняет подряд сравнение двух коммитов. Это может быть полезно при работе с шумными средами CI/CD, где ресурс, доступный, может очень варьироваться между запусками. Это пример подкоманды CLI bencher run для выполнения относительного бенчмаркинга на особо названной ветке feature-branch:

git checkout feature-branch
export FEATURE_BRANCH=feature-branch-$(git rev-parse --short HEAD)
export BENCHER_API_TOKEN=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhdWQiOiJjbGllbnQiLCJleHAiOjE2NzQwNjA3NTAsImlhdCI6MTY3MTQ2ODc1MCwiaXNzIjoiYmVuY2hlci5kZXYiLCJzdWIiOiJzYXVsQGJldHRlcmNhbGxzYXVsLmNvbSIsIm9yZyI6bnVsbH0.CABcvWlPobAHs7wsdR6wX5p0R2jaCd7RmpsnMp5pwEc
git checkout main
bencher run \
--project save-walter-white \
--if-branch "$FEATURE_BRANCH" \
--else-branch \
--testbed localhost \
--iter 3 \
"bencher mock"
git checkout feature-branch
bencher threshold create \
--project save-walter-white \
--branch "$FEATURE_BRANCH" \
--testbed localhost \
--measure latency \
--test t \
--upper-boundary 0.95
bencher run \
--project save-walter-white \
--branch "$FEATURE_BRANCH" \
--testbed localhost \
--iter 3 \
--fold min \
--err \
"bencher mock"
  1. Переключитесь на ветку с функциями. (например, feature-branch)
  2. Создайте переменную окружения, которая является именем функциональной ветки, соединенной с коротким идентификатором коммита git. Это важно! Это гарантирует, что для каждого запуска создается новая ветка.
  3. Переключитесь на целевую ветку. (например, main)
  4. Запустите bencher run для целевой ветки:
    1. Указанная ветка еще не существует. (например, --if-branch "$FEATURE_BRANCH")
    2. Поэтому она будет создана. (например, --else-branch)
    3. Запустите бенчмарки три раза. (например, --iter 3)
  5. Переключитесь на ветку с функциями. (например, feature-branch)
  6. Создайте Порог для ветки с функциями:
    1. Ветка - это ветка с функциями с прикрепленным идентификатором коммита git. (например, --branch "$FEATURE_BRANCH")
    2. Тестовый стенд работает локально. (например, --testbed localhost)
    3. Вид метрики для бенчмарков - Задержка. (например, --measure latency)
    4. Существует менее 30 метрик, используйте t-тест Стьюдента. (например, --test t)
    5. Установите правую границу 95.0%, потому что большая задержка указывает на регрессию производительности. (например, --upper-boundary 0.95)
  7. Запустите bencher run для ветки с функциями:
    1. Ветка будет существовать, так как она только что была создана. (например, --branch "$FEATURE_BRANCH")
    2. Запустите тесты три раза. (например, --iter 3)
    3. Сложите все три метрики в минимальное значение. (например, --fold min)
    4. Установите команду на неудачу, если предупреждение сгенерировано Порогом. (например, --err)


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


Добавьте Bencher в GitHub Actions ➡

Добавьте Bencher в GitLab CI/CD ➡

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