빠른 시작
Bencher란 무엇인가요?
Bencher는 지속적인 벤치마킹 도구 모음입니다. 성능 회귀가 사용자에게 영향을 미친 경험이 있나요? Bencher가 그런 일이 일어나는 것을 막을 수 있었습니다. Bencher를 이용하면 성능 회귀를 상용 환경으로 이동하기 전에 탐지하고 예방할 수 있습니다.
- 실행: 기존 벤치마킹 도구를 사용하여 로컬 또는 CI에서 벤치마크를 실행합니다.
bencher
CLI는 기존 벤치마킹 하네스를 감싸고 결과를 저장합니다. - 추적: 벤치마크 결과를 시간이 지남에 따라 추적합니다. 소스 브랜치, 테스트 베드, 측정 기반의 Bencher 웹 콘솔을 사용하여 결과를 모니터링, 쿼리, 그래프로 만듭니다.
- 캐치: CI에서 성능 회귀를 잡아냅니다. Bencher는 최첨단, 사용자 정의 가능한 분석을 사용하여 상용 환경으로 가기 전에 성능 회귀를 탐지합니다.
단위 테스트가 CI에서 기능 회귀를 방지하기 위해 실행되는 것처럼, 벤치마크는 Bencher와 함께 CI에서 실행되어 성능 회귀를 방지해야 합니다. 성능 버그도 버그입니다!
bencher
CLI 설치
운영 체제를 선택하고 제공된 명령을 실행하여 bencher
CLI를 설치하세요.
자세한 내용은 bencher
CLI 설치 문서를 참조하세요.
⠀
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"
⠀
이제 bencher
CLI가 설치되어 있는지 확인해 봅시다. 다음을 실행하세요:
bencher --version
bencher --version
bencher --version
bencher --version
다음과 같은 출력이 보여야 합니다:
bencher 0.5.0
벤치마크 하니스 선택
이미 작성된 벤치마크가 있다면, 아래 목록에서 프로그래밍 언어와 벤치마크 하니스를 선택하세요. 그렇지 않으면, 이 단계를 건너뛰어도 됩니다. 자세한 내용은 벤치마크 하니스 어댑터 문서를 참조하세요.
벤치마크 추적하기
이제 벤치마크 결과를 추적할 준비가 되었습니다! 이를 위해 ‘bencher run’ CLI 서브커맨드를 사용하여 벤치마크를 실행하고 결과를 수집합니다. 다음을 실행하세요:
⠀
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
이제 브라우저에서 각 벤치마크의 결과를 볼 수 있습니다.
View results
의 링크를 클릭하거나 복사하여 붙여넣으세요.
프로젝트를 클레임하려면, Claim this project
링크를 클릭하거나 복사하여 브라우저에 붙여넣으세요.
🐰 축하합니다! 첫 번째 벤치마크 결과를 추적하셨습니다! 🎉