Início Rápido
O que é o Bencher?
Bencher é um conjunto de ferramentas de benchmarking contínuo. Já teve algum impacto de regressão de desempenho nos seus usuários? Bencher poderia ter prevenido isso. Bencher permite que você detecte e previna regressões de desempenho antes que sejam mescladas.
- Execute: Execute seus benchmarks localmente ou no CI usando os exatos mesmos runners bare metal e suas ferramentas de benchmarking favoritas. O CLI
bencherorquestra a execução dos seus benchmarks em bare metal e armazena seus resultados. - Rastreie: Acompanhe os resultados de seus benchmarks ao longo do tempo. Monitore, consulte e faça gráficos dos resultados usando o console web do Bencher baseado na branch de origem, testbed e medida.
- Capture: Capture regressões de desempenho localmente ou no CI usando o exato mesmo hardware bare metal. Bencher usa análises personalizáveis e de última geração para detectar regressões de desempenho antes que sejam mescladas.
Pelos mesmos motivos que os testes de unidade são executados para prevenir regressões de funcionalidades, benchmarks deveriam ser executados com o Bencher para prevenir regressões de desempenho. Bugs de desempenho são bugs!
Instalar o bencher CLI
Selecione seu sistema operacional e execute o comando fornecido para instalar o bencher CLI.
Para mais detalhes, veja a documentação de instalação do bencher CLI.
⠀curl --proto '=https' --tlsv1.2 -sSfL https://bencher.dev/download/install-cli.sh | shcurl --proto '=https' --tlsv1.2 -sSfL https://bencher.dev/download/install-cli.sh | shcargo install --git https://github.com/bencherdev/bencher --branch main --locked --force bencher_clipowershell -c "irm https://bencher.dev/download/install-cli.ps1 | iex"⠀Agora, vamos verificar se você tem o bencher CLI instalado. Execute:
bencher --versionbencher --versionbencher --versionbencher --versionVocê deverá ver:
bencher 0.6.2Selecione seu Benchmark Harness
Se você já tem benchmarks escritos, selecione sua linguagem de programação e o benchmark harness da lista abaixo. Caso contrário, simplesmente pule esta etapa. Para mais detalhes, veja a documentação dos adaptadores de benchmark harness.
Acompanhe seus Benchmarks
Agora você está pronto para acompanhar os resultados dos seus benchmarks!
Para isso, você usará o subcomando CLI bencher run
para executar seus benchmarks e coletar os resultados. Execute:
⠀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 --adapter dart_benchmark_harness "dart run benchmark/benchmark.dart"bencher run --adapter dart_benchmark_harness "dart run benchmark/benchmark.dart"⠀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 "bencher mock"bencher run "bencher mock"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'"Você pode precisar modificar o comando do benchmark para corresponder à sua configuração.
Se você ainda não tiver nenhum benchmark, pode simplesmente usar o subcomando bencher mock como seu comando de benchmark para gerar alguns dados simulados.
Se tudo funcionar como esperado, o final da saída deverá se parecer com isto:
View report: https://bencher.dev/perf/project-abc4567-wxyz123456789/reports/709d3476-51a4-4939-9584-75d9a2c04c54
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-8e18d5d062c4Agora você pode visualizar os resultados de cada um dos seus benchmarks no navegador.
Clique ou copie e cole os links de Ver resultados.
Para reivindicar o projeto, clique ou copie e cole o link Reivindicar este projeto no seu navegador.
🐰 Parabéns! Você acompanhou seus primeiros resultados de benchmark! 🎉