Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

🐰 Bencher - Continuous Benchmarking

License

NotificationsYou must be signed in to change notification settings

bencherdev/bencher

Use this GitHub action with your project
Add this Action to an existing workflow or create a new one
View on Marketplace

Repository files navigation

Bencher

Bencher is a suite ofcontinuous benchmarking tools.Have you ever had a performance regression impact your users?Bencher could have prevented that from happening.Bencher allows you to detect and prevent performance regressionsbefore they hit production.

  • Run: Run your benchmarks locally or in CI using your favorite benchmarking tools. Thebencher CLI simply wraps your existing benchmark harness and stores its results.
  • Track: Track the results of your benchmarks over time. Monitor, query, and graph the results using the Bencher web console based on the source branch, testbed, benchmark, and measure.
  • Catch: Catch performance regressions in CI. Bencher uses state of the art, customizable analytics to detect performance regressions before they make it to production.

For the same reasons that unit tests are run in CI to prevent feature regressions, benchmarks should be run in CI with Bencher to prevent performance regressions. Performance bugs are bugs!


Bencher consists of:

  • bencher CLI
  • Bencher API Server
  • Bencher Console Web UI

Though Bencher is open source, there is also a hosted version availableBencher Cloud.

The best place to start is theBencher Quick Start tutorial.


Start Continuous Benchmarking

🐰Use the GitHub Action with your project

Documentation

🌐 Also available in:

Supported Benchmark Harnesses

👉 For more details see theexplanation of benchmark harness adapters.

Showcase

Microsoft

Microsoft CCF

Rustls TLS Library

Rustls

Diesel

Diesel

Hydra Database

Hydra Database

GreptimeDB

GreptimeDB

Tailcall

Tailcall

Servo

Servo

Ratatui

Ratatui

Wire

Wire

👉 Checkoutall public projects.

GitHub Actions

Install the Bencher CLI using theGitHub Action,and use it forcontinuous benchmarking in your project.

name:Continuous Benchmarking with Bencheron:push:branches:mainjobs:benchmark_with_bencher:name:Benchmark with Bencherruns-on:ubuntu-latestenv:BENCHER_PROJECT:my-project-slugBENCHER_API_TOKEN:${{ secrets.BENCHER_API_TOKEN }}steps:      -uses:actions/checkout@v4      -uses:bencherdev/bencher@main      -run:bencher run "bencher mock"

Supported Operating Systems:

  • Linux (x86_64 & ARM64)
  • macOS (x86_64 & ARM64)
  • Windows (x86_64 & ARM64)

👉 For more details see theexplanation of how to use GitHub Actions.

Repository Secrets

AddBENCHER_API_TOKEN to youRepository secrets (ex:Repo -> Settings -> Secrets and variables -> Actions -> New repository secret). You can find your API tokens by runningbencher token list my-user-slug orview them in the Bencher Console.

Error on Alert

You can set thebencher run CLI subcommand to errorifan Alert is generated with the--err flag.

bencher run --err"bencher mock"

👉 For more details see theexplanation ofbencher run.

Comment on PRs

You can set thebencher run CLI subcommand to comment on a PR with the--github-actions argument.

bencher run --github-actions"${{ secrets.GITHUB_TOKEN }}""bencher mock"

👉 For more details see theexplanation ofbencher run.

Example PR Comment


Branch254/merge
Testbedubuntu-latest
🚨 1 ALERT: Threshold Boundary Limit exceeded!
BenchmarkMeasure
Units
ViewBenchmark Result
(Result Δ%)
Upper Boundary
(Limit %)
Adapter::JsonLatency
microseconds (µs)
📈plot
🚨alert
🚷threshold
3.45
(+1.52%)
3.36
(102.48%)
Click to view all benchmark results
BenchmarkLatencyBenchmark Results
microseconds (µs)
(Result Δ%)
Upper Boundary
microseconds (µs)
(Limit %)
Adapter::Json📈view plot
🚨view alert
🚷view threshold
3.45
(+1.52%)
3.36
(102.48%)
Adapter::Magic (JSON)📈view plot
🚷view threshold
3.43
(+0.69%)
3.60
(95.40%)
Adapter::Magic (Rust)📈view plot
🚷view threshold
22.10
(-0.83%)
24.73
(89.33%)
Adapter::Rust📈view plot
🚷view threshold
2.31
(-2.76%)
2.50
(92.21%)
Adapter::RustBench📈view plot
🚷view threshold
2.30
(-3.11%)
2.50
(91.87%)
🐰 View full continuous benchmarking report in Bencher

Specify CLI Version

There is also an optionalversion argument to specify an exact version of the Bencher CLI to use.Otherwise, it will default to using the latest CLI version.

-uses:bencherdev/bencher@mainwith:version:0.5.3

Specify an exact version if usingBencherSelf-Hosted.Donot specify an exact version if using BencherCloud as there are still occasional breaking changes.

These Devs Get It

Bencher is like CodeCov for performance metrics.


Jonathan Woollett-Light
Jonathan Woollett-Light
@JonathanWoollett-Light

I think I'm in heaven. Now that I'm starting to see graphs of performance over time automatically from tests I'm running in CI. It's like this whole branch of errors can be caught and noticed sooner.


Price Clark
Price Clark
@gpwclark

95% of the time I don't want to think about my benchmarks. But when I need to, Bencher ensures that I have the detailed historical record waiting there for me. It's fire-and-forget.


Joe Neeman
Joe Neeman
@jneem

I've been looking for a public service like Bencher for about 10 years :)


Jamie Wilkinson
Jamie Wilkinson
@jaqx0r

I'm happy with how quickly I was able to get Bencher configured and working.


Weston Pace
Weston Pace
@westonpace

Bencher's main ideas and concepts are really well designed.


Free Ekanayaka
Free Ekanayaka
@freeekanayaka

Contributing

The easiest way to contribute is to open this repo as aDev Container inVSCode by simply clicking one of the buttons below.Everything you need will already be there!Once set up, both the UI and API should be built, running, and seeded atlocalhost:3000 andlocalhost:61016 respectively.To make any changes to the UI or API though, you will have to exit the startup process and restart the UI and API yourself.

For additional information on contributing, see theDevelopment Getting Started guide.

🐰 All pull requests should target thedevel branch


Bencher VSCode Dev Container

Bencher GitHub Codespaces

There is also apre-built image from CI available for each branch:ghcr.io/bencherdev/bencher-dev-container

License

All content that resides under any directory orfeature named "plus" is licensed under theBencher Plus License.

All other content is licensed under theApache License, Version 2.0 orMIT License at your discretion.

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in Bencher by you, as defined in the Apache-2.0 license, shall be licensed as above, without any additional terms or conditions.


[8]ページ先頭

©2009-2025 Movatter.jp