Быстрый старт
Что такое Bencher?
Bencher - это набор инструментов для непрерывного тестирования производительности. Когда-нибудь регрессия производительности влияла на ваших пользователей? Bencher мог бы предотвратить это. Bencher позволяет вам обнаруживать и предотвращать регрессии производительности до того, как они попадут в продакшн.
- Запустить: Запустите свои тесты производительности локально или в CI, используя ваши любимые инструменты для этого. CLI
bencher
просто оборачивает ваш существующий аппарат тестирования и сохраняет его результаты. - Отслеживать: Отслеживайте результаты ваших тестов производительности со временем. Мониторите, запрашивайте и строите графики результатов с помощью веб-консоли Bencher на основе ветки исходного кода, испытательного стенда и меры.
- Поймать: Отлавливайте регрессии производительности в CI. Bencher использует инструменты аналитики, работающие по последнему слову техники, чтобы обнаружить регрессии производительности, прежде чем они попадут в продакшн.
По тем же причинам, по которым модульные тесты запускаются в CI, чтобы предотвратить регрессии функций, тесты производительности должны быть запущены в CI с Bencher, чтобы предотвратить регрессии производительности. Ошибки производительности – это тоже ошибки!
Установка CLI bencher
Выберите вашу операционную систему и выполните указанную команду для установки CLI bencher
.
Для получения более подробной информации, смотрите документацию по установке CLI bencher
.
⠀
curl --proto '=https' --tlsv1.2 -sSfL https://bencher.dev/download/install-cli.sh | sh
curl --proto '=https' --tlsv1.2 -sSfL https://bencher.dev/download/install-cli.sh | sh
cargo install --git https://github.com/bencherdev/bencher --branch main --locked --force bencher_cli
powershell -c "irm https://bencher.dev/download/install-cli.ps1 | iex"
⠀
Теперь, давайте проверим, что у вас установлен CLI bencher
. Выполните:
bencher --version
bencher --version
bencher --version
bencher --version
Вы должны увидеть:
bencher 0.5.0
Выберите вашу оболочку для тестирования производительности
Если у вас уже есть написанные тесты производительности, выберите язык программирования и оболочку тестирования производительности из списка ниже. В противном случае просто пропустите этот шаг. Для получения более подробной информации смотрите адаптеры оболочки тестирования производительности.
Отслеживайте свои Бенчмарки
Теперь вы готовы отслеживать результаты своих бенчмарков!
Для этого вы будете использовать подкоманду CLI bencher run
для запуска ваших бенчмарков и сбора результатов. Выполните:
⠀
bencher run "make benchmarks"
bencher run "make benchmarks"
bencher run "make benchmarks --benchmark_format=json"
bencher run "make benchmarks --benchmark_format=json"
bencher run "dotnet run -c Release"
bencher run "dotnet run -c Release"
⠀
bencher run "go test -bench"
bencher run "go test -bench"
bencher run --file results.json "java -jar benchmarks.jar -rf json -rff results.json"
bencher run --file results.json "java -jar benchmarks.jar -rf json -rff results.json"
bencher run "node benchmark.js"
bencher run "node benchmark.js"
bencher run "node benchmark.js"
bencher run "node benchmark.js"
bencher run "bencher mock"
bencher run "bencher mock"
bencher run "asv run"
bencher run "asv run"
bencher run --file results.json "pytest --benchmark-json results.json benchmarks.py"
bencher run --file results.json "pytest --benchmark-json results.json benchmarks.py"
bencher run "ruby benchmarks.rb"
bencher run "ruby benchmarks.rb"
bencher run "cargo +nightly bench"
bencher run "cargo +nightly bench"
bencher run "cargo bench"
bencher run "cargo bench"
bencher run "cargo bench"
bencher run "cargo bench"
bencher run "cargo bench"
bencher run "cargo bench"
bencher run --file results.json "hyperfine --export-json results.json 'sleep 0.1'"
bencher run --file results.json "hyperfine --export-json results.json 'sleep 0.1'"
Возможно, вам потребуется изменить команду бенчмаркинга, чтобы она соответствовала вашей конфигурации.
Если у вас еще нет бенчмарков, вы можете просто использовать подкоманду bencher mock
в качестве команды бенчмаркинга для генерации фиктивных данных.
Если все работает как ожидается, в конце вывода должно появиться что-то подобное:
View results:- bencher::mock_0 (Latency): https://bencher.dev/perf/project-abc4567-wxyz123456789?branches=88d5192d-5cd1-47c6-a817-056e5968737c&heads=657a8ee9-1f30-49d4-bd9b-ceed02576d7e&testbeds=f3a5db46-a57e-4caf-b96e-f0c1111eaa67&benchmarks=f7022024-ae16-4782-8f0d-869d65a82930&measures=775999d3-d705-482f-acd8-41947f8e0fbc&start_time=1741390156000&end_time=1743982156000&report=709d3476-51a4-4939-9584-75d9a2c04c54- bencher::mock_1 (Latency): https://bencher.dev/perf/project-abc4567-wxyz123456789?branches=88d5192d-5cd1-47c6-a817-056e5968737c&heads=657a8ee9-1f30-49d4-bd9b-ceed02576d7e&testbeds=f3a5db46-a57e-4caf-b96e-f0c1111eaa67&benchmarks=7a823440-216f-482d-a05f-8bf75e865bba&measures=775999d3-d705-482f-acd8-41947f8e0fbc&start_time=1741390156000&end_time=1743982156000&report=709d3476-51a4-4939-9584-75d9a2c04c54- bencher::mock_2 (Latency): https://bencher.dev/perf/project-abc4567-wxyz123456789?branches=88d5192d-5cd1-47c6-a817-056e5968737c&heads=657a8ee9-1f30-49d4-bd9b-ceed02576d7e&testbeds=f3a5db46-a57e-4caf-b96e-f0c1111eaa67&benchmarks=8d9695ff-f352-4781-9561-3c69012fd9fe&measures=775999d3-d705-482f-acd8-41947f8e0fbc&start_time=1741390156000&end_time=1743982156000&report=709d3476-51a4-4939-9584-75d9a2c04c54- bencher::mock_3 (Latency): https://bencher.dev/perf/project-abc4567-wxyz123456789?branches=88d5192d-5cd1-47c6-a817-056e5968737c&heads=657a8ee9-1f30-49d4-bd9b-ceed02576d7e&testbeds=f3a5db46-a57e-4caf-b96e-f0c1111eaa67&benchmarks=8ef6e256-8084-4afe-a7cf-eaa46384c19d&measures=775999d3-d705-482f-acd8-41947f8e0fbc&start_time=1741390156000&end_time=1743982156000&report=709d3476-51a4-4939-9584-75d9a2c04c54- bencher::mock_4 (Latency): https://bencher.dev/perf/project-abc4567-wxyz123456789?branches=88d5192d-5cd1-47c6-a817-056e5968737c&heads=657a8ee9-1f30-49d4-bd9b-ceed02576d7e&testbeds=f3a5db46-a57e-4caf-b96e-f0c1111eaa67&benchmarks=1205e35a-c73b-4ff9-916c-40838a62ae0b&measures=775999d3-d705-482f-acd8-41947f8e0fbc&start_time=1741390156000&end_time=1743982156000&report=709d3476-51a4-4939-9584-75d9a2c04c54
Claim this project: https://bencher.dev/auth/signup?claim=d4b0cd5a-8422-40af-9872-8e18d5d062c4
Теперь вы можете просмотреть результаты для каждого из ваших бенчмарков в браузере.
Нажмите на ссылки или скопируйте и вставьте их из Просмотр результатов
.
Чтобы подтвердить проект, нажмите на ссылку или скопируйте и вставьте в браузер ссылку Подтвердить этот проект
.
🐰 Поздравляем! Вы отследили свои первые результаты бенчмарков! 🎉