{"id":13472062,"url":"https://github.com/bencherdev/bencher","last_synced_at":"2025-03-26T15:31:18.170Z","repository":{"id":58875703,"uuid":"282416261","full_name":"bencherdev/bencher","owner":"bencherdev","description":"🐰 Bencher - Continuous Benchmarking","archived":false,"fork":false,"pushed_at":"2025-03-16T12:58:28.000Z","size":24784,"stargazers_count":644,"open_issues_count":132,"forks_count":29,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-03-19T11:43:04.531Z","etag":null,"topics":["benchmark","benchmarking","cd","ci","ci-cd","code-quality","continuous-benchmarking","performance"],"latest_commit_sha":null,"homepage":"https://bencher.dev","language":"MDX","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bencherdev.png","metadata":{"files":{"readme":"README.md","changelog":"changelog.md","contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-07-25T09:54:21.000Z","updated_at":"2025-03-13T23:58:08.000Z","dependencies_parsed_at":"2023-09-24T22:13:39.742Z","dependency_job_id":"b4d5934c-7781-4895-8e37-7d682bf805ad","html_url":"https://github.com/bencherdev/bencher","commit_stats":null,"previous_names":[],"tags_count":119,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bencherdev%2Fbencher","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bencherdev%2Fbencher/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bencherdev%2Fbencher/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bencherdev%2Fbencher/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bencherdev","download_url":"https://codeload.github.com/bencherdev/bencher/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245681273,"owners_count":20655162,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["benchmark","benchmarking","cd","ci","ci-cd","code-quality","continuous-benchmarking","performance"],"created_at":"2024-07-31T16:00:51.540Z","updated_at":"2025-03-26T15:31:18.159Z","avatar_url":"https://github.com/bencherdev.png","language":"MDX","readme":"\u003ch1\u003e\n  \u003ca href=\"https://bencher.dev\"\u003e\n    \u003cimg\n      src=\"https://bencher.dev/favicon.svg\"\n      aria-label=\"🐰 Bencher\"\n      width=32\n    /\u003e\n  \u003c/a\u003e\n  Bencher\n\u003c/h1\u003e\n\n[Bencher](https://bencher.dev) is a suite of [continuous benchmarking](https://bencher.dev/docs/explanation/continuous-benchmarking/) tools.\nHave you ever had a performance regression impact your users?\nBencher could have prevented that from happening.\nBencher allows you to detect and prevent performance regressions _before_ they hit production.\n\n- **Run**: Run your benchmarks locally or in CI using your favorite benchmarking tools. The `bencher` CLI simply wraps your existing benchmark harness and stores its results.\n- **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.\n- **Catch**: Catch performance regressions in CI. Bencher uses state of the art, customizable analytics to detect performance regressions before they make it to production.\n\nFor 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!\n\n\u003cbr /\u003e\n\nBencher consists of:\n\n- `bencher` CLI\n- Bencher API Server\n- Bencher Console Web UI\n\n\u003cbr /\u003e\n\nThough Bencher is open source, there is also a hosted version available [Bencher Cloud](https://bencher.dev/).\n\nThe best place to start is the [Bencher Quick Start](https://bencher.dev/docs/tutorial/quick-start/) tutorial.\n\n\u003cbr /\u003e\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://bencher.dev/docs/tutorial/quick-start/\"\u003e\n    \u003cimg\n      src=\"https://s3.amazonaws.com/public.bencher.dev/github/continuous-benchmarking.png\"\n      alt=\"Start Continuous Benchmarking\"\n    /\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003e 🐰 [Use the GitHub Action with your project](#github-actions)\n\n## Documentation\n\n- Tutorial\n  - [Quick Start](https://bencher.dev/docs/tutorial/quick-start/)\n  - [Self-Hosted Quick Start](https://bencher.dev/docs/tutorial/docker/)\n- How To\n  - [Install CLI](https://bencher.dev/docs/how-to/install-cli/)\n  - [Track Benchmarks in CI](https://bencher.dev/docs/how-to/track-benchmarks/)\n  - [GitHub Actions](https://bencher.dev/docs/how-to/github-actions/)\n  - [GitLab CI/CD](https://bencher.dev/docs/how-to/gitlab-ci-cd/)\n  - [Track Custom Benchmarks](https://bencher.dev/docs/how-to/track-custom-benchmarks/)\n  - [Track Build Time](https://bencher.dev/docs/how-to/track-build-time/)\n  - [Track File Size](https://bencher.dev/docs/how-to/track-file-size/)\n  - [Self-Hosted GitHub App](https://bencher.dev/docs/how-to/github-app/)\n- Explanation\n  - [Benchmarking Overview](https://bencher.dev/docs/explanation/benchmarking/)\n  - [`bencher run`](https://bencher.dev/docs/explanation/bencher-run/)\n  - [Branch Selection](https://bencher.dev/docs/explanation/branch-selection/)\n  - [Thresholds \u0026 Alerts](https://bencher.dev/docs/explanation/thresholds/)\n  - [Benchmark Adapters](https://bencher.dev/docs/explanation/adapters/)\n  - [Continuous Benchmarking](https://bencher.dev/docs/explanation/continuous-benchmarking/)\n  - [Bencher Self-Hosted](https://bencher.dev/docs/explanation/bencher-self-hosted/)\n  - [Talks](https://bencher.dev/docs/explanation/talks/)\n- Reference\n  - [REST API](https://bencher.dev/docs/api/)\n  - [Architecture](https://bencher.dev/docs/reference/architecture/)\n  - [Console Server Config](https://bencher.dev/docs/reference/console-config/)\n  - [API Server Config](https://bencher.dev/docs/reference/server-config/)\n  - [Bencher Metric Format](https://bencher.dev/docs/reference/bencher-metric-format/)\n  - [Prior Art](https://bencher.dev/docs/reference/prior-art/)\n  - [Roadmap](https://bencher.dev/docs/reference/roadmap/)\n  - [Changelog](https://bencher.dev/docs/reference/changelog/)\n\n🌐 Also available in:\n\n- [简体中文](https://bencher.dev/zh/docs/)\n- [Español](https://bencher.dev/es/docs/)\n- [Português do Brasil](https://bencher.dev/pt/docs/)\n- [Русский](https://bencher.dev/ru/docs/)\n- [日本語](https://bencher.dev/ja/docs/)\n- [Français](https://bencher.dev/fr/docs/)\n- [Deutsch](https://bencher.dev/de/docs/)\n- [한국어](https://bencher.dev/ko/docs/)\n\n## Supported Benchmark Harnesses\n\n- {...} JSON\n  - [Custom benchmark harness support](https://bencher.dev/docs/explanation/adapters/#-json)\n  - [Build Time (Compile Time)](https://bencher.dev/docs/explanation/adapters/#%EF%B8%8F-build-time)\n  - [File Size (Binary Size)](https://bencher.dev/docs/explanation/adapters/#%EF%B8%8F-file-size)\n- #️⃣ C#\n  - [BenchmarkDotNet](https://bencher.dev/docs/explanation/adapters/#%EF%B8%8F%E2%83%A3-c-dotnet)\n- ➕ C++\n  - [Catch2](https://bencher.dev/docs/explanation/adapters/#-c-catch2)\n  - [Google Benchmark](https://bencher.dev/docs/explanation/adapters/#-c-google)\n- 🕳 Go\n  - [go test -bench](https://bencher.dev/docs/explanation/adapters/#-go-bench)\n- ☕️ Java\n  - [Java Microbenchmark Harness (JMH)](https://bencher.dev/docs/explanation/adapters/#%EF%B8%8F-java-jmh)\n- 🕸 JavaScript\n  - [Benchmark.js](https://bencher.dev/docs/explanation/adapters/#-javascript-benchmark)\n  - [console.time/console.timeEnd](https://bencher.dev/docs/explanation/adapters/#-javascript-time)\n- 🐍 Python\n  - [airspeed velocity](https://bencher.dev/docs/explanation/adapters/#-python-asv)\n  - [pytest-benchmark](https://bencher.dev/docs/explanation/adapters/#-python-pytest)\n- ♦️ Ruby\n  - [Benchmark](https://bencher.dev/docs/explanation/adapters/#%EF%B8%8F-ruby-benchmark)\n- 🦀 Rust\n  - [libtest bench](https://bencher.dev/docs/explanation/adapters/#-rust-bench)\n  - [Criterion](https://bencher.dev/docs/explanation/adapters/#-rust-criterion)\n  - [Iai](https://bencher.dev/docs/explanation/adapters/#-rust-iai)\n  - [Iai-Callgrind](https://bencher.dev/docs/explanation/adapters/#-rust-iai-callgrind)\n- ❯_ Shell\n  - [Hyperfine](https://bencher.dev/docs/explanation/adapters/#_%EF%B8%8F-shell-hyperfine)\n\n👉 For more details see the [explanation of benchmark harness adapters](https://bencher.dev/docs/explanation/adapters/).\n\n## Showcase\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\n      \u003cp align=\"center\"\u003e\n        \u003ca href=\"https://bencher.dev/perf/ccf?key=true\u0026reports_per_page=4\u0026branches_per_page=8\u0026testbeds_per_page=8\u0026benchmarks_per_page=8\u0026plots_per_page=8\u0026reports_page=1\u0026branches_page=1\u0026testbeds_page=1\u0026benchmarks_page=1\u0026plots_page=1\u0026branches=d5004f0a-5dbe-42bb-a821-1f55704d6ec2\u0026testbeds=1e6f6a27-eb58-4f16-8d01-0148fbaed70e\u0026benchmarks=3bae8305-29e0-4e5f-8157-01f8f471b408\u0026measures=bc9fb376-9a85-478a-97fd-ebd7703c9663\u0026start_time=1715185355000\u0026end_time=1717777355000\u0026clear=true\u0026tab=benchmarks\"\u003e\n          \u003cimg\n            src=\"https://s3.amazonaws.com/public.bencher.dev/case-study/microsoft.png\"\n            alt=\"Microsoft\"\n            width=\"300px\"\n          /\u003e\n        \u003c/a\u003e\n      \u003c/p\u003e\n      \u003cp align=\"center\"\u003eMicrosoft CCF\u003c/p\u003e\n    \u003c/td\u003e\n    \u003ctd\u003e\n      \u003cp align=\"center\"\u003e\n        \u003ca href=\"https://bencher.dev/perf/rustls-821705769?key=true\u0026reports_per_page=8\u0026branches_per_page=8\u0026testbeds_per_page=8\u0026benchmarks_per_page=8\u0026reports_page=1\u0026branches_page=1\u0026testbeds_page=1\u0026benchmarks_page=1\u0026clear=true\u0026tab=branches\u0026measures=013468de-9c37-4605-b363-aebbbf63268d\u0026branches=28fae530-2b53-4482-acd4-47e16030d54f\u0026testbeds=62ed31c3-8a58-479c-b828-52521ed67bee\u0026benchmarks=bd25f73c-b2b9-4188-91b4-f632287c0a1b%2C8d443816-7a23-40a1-a54c-59de911eb517%2C42edb37f-ca91-4984-8835-445514575c85\u0026start_time=1704067200000\u0026notify_kind=alert\u0026notify_text=Learn%20more%20about%20continuous%20benchmarking%20for%20the%20Rustls%20project.\u0026notify_timeout=2147483647\u0026notify_link_url=https%3A%2F%2Fbencher.dev%2Flearn%2Fcase-study%2Frustls%2F\u0026notify_link_text=Read%20the%20case%20study\"\u003e\n          \u003cimg\n            src=\"https://s3.amazonaws.com/public.bencher.dev/case-study/rustls-rust-tls.png\"\n            alt=\"Rustls TLS Library\"\n            width=\"300px\"\n          /\u003e\n        \u003c/a\u003e\n      \u003c/p\u003e\n      \u003cp align=\"center\"\u003eRustls\u003c/p\u003e\n    \u003c/td\u003e\n    \u003ctd\u003e\n      \u003cp align=\"center\"\u003e\n        \u003ca href=\"https://bencher.dev/perf/diesel?key=true\u0026reports_per_page=8\u0026branches_per_page=8\u0026testbeds_per_page=8\u0026benchmarks_per_page=8\u0026reports_page=1\u0026branches_page=1\u0026testbeds_page=1\u0026benchmarks_page=1\u0026clear=true\u0026tab=benchmarks\u0026measures=2d3bd4cd-c4d4-4aa1-9e60-47e51e2b9dde\u0026branches=bf9a5209-6524-45e3-af26-b8f98eee3bad\u0026testbeds=4e5c3c90-920c-4741-8cf7-aaed4e16e9a5\u0026benchmarks=5dfa78a5-7785-4d33-a336-aab5fff43372%2Cf65ec533-abf5-443e-a0d8-e4a583c5779e%2C0c1bcad9-2100-4170-9bc7-96a3b89071b9%2Ccee41d01-30db-4acc-8727-0d0b4ccbe216%2C6d23685f-e082-4913-8c22-14311030d130\u0026notify_kind=alert\u0026notify_text=Learn%20more%20about%20continuous%20benchmarking%20for%20the%20Diesel%20project.\u0026notify_timeout=2147483647\u0026notify_link_url=https%3A%2F%2Fbencher.dev%2Flearn%2Fcase-study%2Fdiesel%2F\u0026notify_link_text=Read%20the%20case%20study\"\u003e\n          \u003cimg\n            src=\"https://s3.amazonaws.com/public.bencher.dev/case-study/diesel.svg\"\n            alt=\"Diesel\"\n            width=\"300px\"\n          /\u003e\n        \u003c/a\u003e\n      \u003c/p\u003e\n      \u003cp align=\"center\"\u003eDiesel\u003c/p\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\n      \u003cp align=\"center\"\u003e\n        \u003ca href=\"https://bencher.dev/perf/hydra-postgres?key=true\u0026reports_per_page=8\u0026branches_per_page=8\u0026testbeds_per_page=8\u0026benchmarks_per_page=8\u0026reports_page=1\u0026branches_page=1\u0026testbeds_page=1\u0026benchmarks_page=6\u0026clear=true\u0026tab=branches\u0026measures=c20a9c30-e20a-45b7-bba5-4a6e940f951f\u0026branches=e6bcbe0c-210d-4ab1-8fe4-5d9498800980\u0026testbeds=1d3283b3-3e52-4dd0-a018-fb90c9361a2e\u0026benchmarks=b31c3185-9701-4576-9fd7-288aea5cc7e4%2Cc4efd5bb-f4c4-4b75-9137-f2a841c04cfe%2C6e050650-ad8a-4043-b62c-a39e0e202bfe%2Cec575db9-3c10-4122-af8f-a062be36a198\"\u003e\n          \u003cimg\n            src=\"https://s3.amazonaws.com/public.bencher.dev/case-study/hydra-db.svg\"\n            alt=\"Hydra Database\"\n            width=\"300px\"\n          /\u003e\n        \u003c/a\u003e\n      \u003c/p\u003e\n      \u003cp align=\"center\"\u003eHydra Database\u003c/p\u003e\n    \u003c/td\u003e\n    \u003ctd\u003e\n      \u003cp align=\"center\"\u003e\n        \u003ca href=\"https://bencher.dev/perf/greptimedb?key=true\u0026reports_per_page=4\u0026branches_per_page=8\u0026testbeds_per_page=8\u0026benchmarks_per_page=8\u0026reports_page=1\u0026branches_page=1\u0026testbeds_page=1\u0026benchmarks_page=1\u0026report=8dcbda4a-c239-4a9e-8399-4fc699f775b4\u0026branches=3b46708f-b87f-4f52-b1bb-1d9cc7bfee2d\u0026testbeds=6d3be02f-9efe-4e47-8a5d-e389c228172d\u0026benchmarks=da5c8cbe-9aef-431e-9168-11ef0821c8db%2Cbb7ce469-5c34-4a69-ab2f-d9769ca5be2a\u0026measures=a2f1689d-44d5-4d5e-863f-47d285cedf97\u0026start_time=1707524593000\u0026end_time=1710116593000\u0026clear=true\"\u003e\n          \u003cimg\n            src=\"https://s3.amazonaws.com/public.bencher.dev/case-study/greptimedb.svg\"\n            alt=\"GreptimeDB\"\n            width=\"300px\"\n          /\u003e\n        \u003c/a\u003e\n      \u003c/p\u003e\n      \u003cp align=\"center\"\u003eGreptimeDB\u003c/p\u003e\n    \u003c/td\u003e\n    \u003ctd\u003e\n      \u003cp align=\"center\"\u003e\n        \u003ca href=\"https://bencher.dev/perf/tailcall?key=true\u0026reports_per_page=4\u0026branches_per_page=8\u0026testbeds_per_page=8\u0026benchmarks_per_page=8\u0026reports_page=1\u0026branches_page=1\u0026testbeds_page=1\u0026benchmarks_page=1\u0026branches=3646cfed-fd77-417e-b8d5-90eab450e855\u0026testbeds=5823e8f8-162f-4a86-862d-3ed9b3415a75\u0026benchmarks=5022fcf2-e392-4dc6-8b62-cb2da9a6e36a%2Cd1499469-f2dc-4b38-91ba-83ecf11ce678%2C851fc472-d9d7-42b8-ba91-b0f90e3c9909%2Cdbea7f22-5076-4a91-a83e-bb2cadddb069\u0026measures=d6846b7a-7a7a-4e2e-91a1-131232a131e3\u0026start_time=1710981217000\u0026end_time=1713573818000\u0026clear=true\u0026upper_boundary=false\u0026range=version\u0026tab=branches\"\u003e\n          \u003cimg\n            src=\"https://s3.amazonaws.com/public.bencher.dev/case-study/tailcall.svg\"\n            alt=\"Tailcall\"\n            width=\"300px\"\n          /\u003e\n        \u003c/a\u003e\n      \u003c/p\u003e\n      \u003cp align=\"center\"\u003eTailcall\u003c/p\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\n      \u003cp align=\"center\"\u003e\n        \u003ca href=\"https://bencher.dev/perf/servo?key=true\u0026reports_per_page=4\u0026branches_per_page=8\u0026testbeds_per_page=8\u0026benchmarks_per_page=8\u0026plots_per_page=8\u0026reports_page=1\u0026branches_page=1\u0026testbeds_page=1\u0026benchmarks_page=1\u0026plots_page=1\u0026branches=52e1e9bb-959c-4171-a53d-e06bd694a6c1\u0026heads=3dbe3681-11b1-4e30-b482-4ee72dc0960c\u0026testbeds=d742c702-3842-4108-9d0c-2db74e57599a\u0026measures=678e4118-c8a5-494d-8799-08abc3021cd5\u0026start_time=1734048000000\u0026end_time=1735236203000\u0026lower_boundary=false\u0026upper_boundary=false\u0026clear=true\u0026tab=benchmarks\u0026benchmarks=c4da10d8-9539-4943-95ca-5e08df0cd6f9\u0026benchmarks_search=servo\"\u003e\n          \u003cimg\n            src=\"https://s3.us-east-1.amazonaws.com/public.bencher.dev/case-study/servo.svg\"\n            alt=\"Servo\"\n            width=\"300px\"\n          /\u003e\n        \u003c/a\u003e\n      \u003c/p\u003e\n      \u003cp align=\"center\"\u003eServo\u003c/p\u003e\n    \u003c/td\u003e\n    \u003ctd\u003e\n      \u003cp align=\"center\"\u003e\n        \u003ca href=\"https://bencher.dev/perf/ratatui-org?key=true\u0026reports_per_page=4\u0026branches_per_page=8\u0026testbeds_per_page=8\u0026benchmarks_per_page=8\u0026plots_per_page=8\u0026reports_page=1\u0026branches_page=1\u0026testbeds_page=1\u0026benchmarks_page=1\u0026plots_page=1\u0026branches=95ce51f3-9a78-41e8-8700-562f11680798\u0026testbeds=0615b230-cbf8-4ea6-8e2e-616c282b102a\u0026measures=b917dd68-60ef-41c6-8ce9-2164eba4f46b\u0026start_time=1720841447000\u0026end_time=1723434422000\u0026clear=true\u0026tab=benchmarks\u0026branches_search=main\u0026benchmarks_search=barchart%2F\u0026benchmarks=5695514c-6501-44a4-9a43-9de69078be9c%2C7bada371-e16a-475b-9424-af842fd2dd70%2Cadb521a6-df19-4ee9-af93-e783b69a4dc0\u0026upper_boundary=false\u0026lower_boundary=false\"\u003e\n          \u003cimg\n            src=\"https://s3.amazonaws.com/public.bencher.dev/case-study/ratatui.png\"\n            alt=\"Ratatui\"\n            width=\"300px\"\n          /\u003e\n        \u003c/a\u003e\n      \u003c/p\u003e\n      \u003cp align=\"center\"\u003eRatatui\u003c/p\u003e\n    \u003c/td\u003e\n    \u003ctd\u003e\n      \u003cp align=\"center\"\u003e\n        \u003ca href=\"https://bencher.dev/perf/core-crypto-mmbtki3h?key=true\u0026reports_per_page=4\u0026branches_per_page=8\u0026testbeds_per_page=8\u0026benchmarks_per_page=8\u0026plots_per_page=8\u0026reports_page=1\u0026branches_page=1\u0026testbeds_page=1\u0026benchmarks_page=1\u0026plots_page=1\u0026branches=cd6b82fc-bbfb-4680-afa6-ab88ca62a1ef\u0026testbeds=7f837718-cf29-423f-bd13-2b516ec88cda\u0026measures=c1f87d1c-d949-4bf4-8b76-eb782e882d0e\u0026start_time=1719668529000\u0026end_time=1722261285000\u0026clear=true\u0026tab=benchmarks\u0026benchmarks_search=6010\u0026benchmarks=a4cefec8-6548-4e20-a7c1-75456b7ea925%2C0c73af64-460b-4082-a73b-77e3a980606d\"\u003e\n          \u003cimg\n            src=\"https://s3.amazonaws.com/public.bencher.dev/case-study/wire.svg\"\n            alt=\"Wire\"\n            width=\"300px\"\n          /\u003e\n        \u003c/a\u003e\n      \u003c/p\u003e\n      \u003cp align=\"center\"\u003eWire\u003c/p\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n👉 Checkout [all public projects](https://bencher.dev/perf).\n\n## GitHub Actions\n\nInstall the Bencher CLI using the [GitHub Action](https://github.com/marketplace/actions/bencher-cli),\nand use it for [continuous benchmarking](https://bencher.dev/docs/explanation/continuous-benchmarking/) in your project.\n\n```yaml\nname: Continuous Benchmarking with Bencher\non:\n  push:\n    branches: main\njobs:\n  benchmark_with_bencher:\n    name: Benchmark with Bencher\n    runs-on: ubuntu-latest\n    env:\n      BENCHER_PROJECT: my-project-slug\n      BENCHER_API_TOKEN: ${{ secrets.BENCHER_API_TOKEN }}\n    steps:\n      - uses: actions/checkout@v4\n      - uses: bencherdev/bencher@main\n      - run: bencher run \"bencher mock\"\n```\n\nSupported Operating Systems:\n- Linux (x86_64 \u0026 ARM64)\n- MacOS (x86_64 \u0026 ARM64)\n- Windows (x86_64 \u0026 ARM64)\n\n\u003cbr /\u003e\n\n👉 For more details see the [explanation of how to use GitHub Actions](https://bencher.dev/docs/how-to/github-actions/).\n\n### Repository Secrets\n\nAdd `BENCHER_API_TOKEN` to you **Repository** secrets (ex: `Repo -\u003e Settings -\u003e Secrets and variables -\u003e Actions -\u003e New repository secret`). You can find your API tokens by running `bencher token list my-user-slug` or [view them in the Bencher Console](https://bencher.dev/console/users/tokens).\n\n### Error on Alert\n\nYou can set the `bencher run` CLI subcommand to error\nif [an Alert is generated](https://bencher.dev/docs/explanation/thresholds/) with the `--err` flag.\n\n```bash\nbencher run --err \"bencher mock\"\n```\n\n👉 For more details see the [explanation of `bencher run`](https://bencher.dev/docs/explanation/bencher-run/#--err).\n\n### Comment on PRs\n\nYou can set the `bencher run` CLI subcommand to comment on a PR with the `--github-actions` argument.\n\n```bash\nbencher run --github-actions \"${{ secrets.GITHUB_TOKEN }}\" \"bencher mock\"\n```\n\n👉 For more details see the [explanation of `bencher run`](https://bencher.dev/docs/explanation/bencher-run/#--github-actions/).\n\n### Example PR Comment\n\n\u003cbr /\u003e\n\n\u003ch2\u003e\u003ca href=\"https://bencher.dev/perf/bencher/reports/36a1eeff-57f5-4b99-b058-8c9c240a9f2c?utm_medium=referral\u0026utm_source=github\u0026utm_content=readme\u0026utm_campaign=readme\u0026utm_term=bencher\"\u003e\u003cimg src=\"https://bencher.dev/favicon.svg\" width=\"24\" height=\"24\" alt=\"🐰\" /\u003e Bencher Report\u003c/a\u003e\u003c/h2\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd\u003eBranch\u003c/td\u003e\u003ctd\u003e\u003ca href=\"https://bencher.dev/perf/bencher/branches/254-merge?utm_medium=referral\u0026utm_source=github\u0026utm_content=readme\u0026utm_campaign=readme\u0026utm_term=bencher\"\u003e254/merge\u003c/a\u003e\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003eTestbed\u003c/td\u003e\u003ctd\u003e\u003ca href=\"https://bencher.dev/perf/bencher/testbeds/ubuntu-latest?utm_medium=referral\u0026utm_source=github\u0026utm_content=readme\u0026utm_campaign=readme\u0026utm_term=bencher\"\u003eubuntu-latest\u003c/a\u003e\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e\u003cblockquote\u003e\u003cb\u003e🚨 1 ALERT:\u003c/b\u003e Threshold Boundary Limit exceeded!\u003c/blockquote\u003e\u003ctable\u003e\u003cthead\u003e\u003ctr\u003e\u003cth\u003eBenchmark\u003c/th\u003e\u003cth\u003eMeasure\u003cbr/\u003eUnits\u003c/th\u003e\u003cth\u003eView\u003c/th\u003e\u003cth\u003eBenchmark Result\u003cbr/\u003e(Result Δ%)\u003c/th\u003e\u003cth\u003eUpper Boundary\u003cbr/\u003e(Limit %)\u003c/th\u003e\u003c/tr\u003e\u003c/thead\u003e\u003ctbody\u003e\u003ctr\u003e\u003ctd\u003e\u003ca href=\"https://bencher.dev/perf/bencher/benchmarks/e93b3d71-8499-4fae-bb7c-4e540b775714?utm_medium=referral\u0026utm_source=github\u0026utm_content=readme\u0026utm_campaign=readme\u0026utm_term=bencher\"\u003eAdapter::Json\u003c/a\u003e\u003c/td\u003e\u003ctd\u003e\u003ca href=\"http://localhost:3000/perf/the-computer/measures/latency?utm_medium=referral\u0026utm_source=cli\u0026utm_content=comment\u0026utm_campaign=pr+comments\u0026utm_term=the-computer\"\u003eLatency\u003cbr/\u003emicroseconds (µs)\u003c/a\u003e\u003c/td\u003e\u003ctd\u003e📈 \u003ca href=\"https://bencher.dev/perf/bencher?branches=bdcbbf3c-9073-4006-b194-b11aff2f94c1\u0026testbeds=0d991aac-b241-493a-8b0f-8d41419455d2\u0026benchmarks=e93b3d71-8499-4fae-bb7c-4e540b775714\u0026measures=4358146b-b647-4869-9d24-bd22bb0c49b5\u0026start_time=1699143413000\u0026end_time=1701735487000\u0026upper_boundary=true\"\u003eplot\u003c/a\u003e\u003cbr/\u003e🚨 \u003ca href=\"https://bencher.dev/perf/bencher/alerts/91ee27a7-2aee-41fe-b037-80b786f26cd5?utm_medium=referral\u0026utm_source=github\u0026utm_content=readme\u0026utm_campaign=readme\u0026utm_term=bencher\"\u003ealert\u003c/a\u003e\u003cbr/\u003e🚷 \u003ca href=\"https://bencher.dev/perf/bencher/thresholds/f6ade42d-ef45-4533-b6fe-588c1f3e9405?utm_medium=referral\u0026utm_source=github\u0026utm_content=readme\u0026utm_campaign=readme\u0026utm_term=bencher\"\u003ethreshold\u003c/a\u003e\u003c/td\u003e\u003ctd\u003e\u003cb\u003e3.45\u003cbr/\u003e(+1.52%)\u003c/b\u003e\u003c/td\u003e\u003ctd\u003e\u003cb\u003e3.36\u003cbr/\u003e(102.48%)\u003c/b\u003e\u003c/td\u003e\u003c/tr\u003e\u003c/tbody\u003e\u003c/table\u003e\u003cdetails\u003e\u003csummary\u003eClick to view all benchmark results\u003c/summary\u003e\u003cbr/\u003e\u003ctable\u003e\u003ctr\u003e\u003cth\u003eBenchmark\u003c/th\u003e\u003cth\u003e\u003ca href=\"https://bencher.dev/perf/bencher/measures/latency?utm_medium=referral\u0026utm_source=github\u0026utm_content=readme\u0026utm_campaign=readme\u0026utm_term=bencher\"\u003eLatency\u003c/a\u003e\u003c/th\u003e\u003cth\u003eBenchmark Results\u003cbr/\u003emicroseconds (µs)\u003cbr/\u003e(Result Δ%)\u003c/th\u003e\u003cth\u003eUpper Boundary\u003cbr/\u003emicroseconds (µs)\u003cbr/\u003e(Limit %)\u003c/th\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003ca href=\"https://bencher.dev/perf/bencher/benchmarks/e93b3d71-8499-4fae-bb7c-4e540b775714?utm_medium=referral\u0026utm_source=github\u0026utm_content=readme\u0026utm_campaign=readme\u0026utm_term=bencher\"\u003eAdapter::Json\u003c/a\u003e\u003c/td\u003e\u003ctd\u003e📈  \u003ca href=\"https://bencher.dev/perf/bencher?branches=bdcbbf3c-9073-4006-b194-b11aff2f94c1\u0026testbeds=0d991aac-b241-493a-8b0f-8d41419455d2\u0026benchmarks=e93b3d71-8499-4fae-bb7c-4e540b775714\u0026measures=4358146b-b647-4869-9d24-bd22bb0c49b5\u0026start_time=1699143413000\u0026end_time=1701735487000\u0026upper_boundary=true\"\u003eview plot\u003c/a\u003e\u003cbr/\u003e🚨 \u003ca href=\"https://bencher.dev/perf/bencher/alerts/91ee27a7-2aee-41fe-b037-80b786f26cd5?utm_medium=referral\u0026utm_source=github\u0026utm_content=readme\u0026utm_campaign=readme\u0026utm_term=bencher\"\u003eview alert\u003c/a\u003e\u003cbr/\u003e🚷 \u003ca href=\"https://bencher.dev/perf/bencher/thresholds/f6ade42d-ef45-4533-b6fe-588c1f3e9405?utm_medium=referral\u0026utm_source=github\u0026utm_content=readme\u0026utm_campaign=readme\u0026utm_term=bencher\"\u003eview threshold\u003c/a\u003e\u003c/td\u003e\u003ctd\u003e\u003cb\u003e3.45\u003cbr/\u003e(+1.52%)\u003c/b\u003e\u003c/td\u003e\u003ctd\u003e\u003cb\u003e3.36\u003cbr/\u003e(102.48%)\u003c/b\u003e\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003ca href=\"https://bencher.dev/perf/bencher/benchmarks/3bfd5887-83ec-4e62-8690-02855a38fbc9?utm_medium=referral\u0026utm_source=github\u0026utm_content=readme\u0026utm_campaign=readme\u0026utm_term=bencher\"\u003eAdapter::Magic (JSON)\u003c/a\u003e\u003c/td\u003e\u003ctd\u003e📈 \u003ca href=\"https://bencher.dev/perf/bencher?branches=bdcbbf3c-9073-4006-b194-b11aff2f94c1\u0026testbeds=0d991aac-b241-493a-8b0f-8d41419455d2\u0026benchmarks=3bfd5887-83ec-4e62-8690-02855a38fbc9\u0026measures=4358146b-b647-4869-9d24-bd22bb0c49b5\u0026start_time=1699143413000\u0026end_time=1701735487000\u0026upper_boundary=true\"\u003eview plot\u003c/a\u003e\u003cbr/\u003e🚷 \u003ca href=\"https://bencher.dev/perf/bencher/thresholds/f6ade42d-ef45-4533-b6fe-588c1f3e9405?utm_medium=referral\u0026utm_source=github\u0026utm_content=readme\u0026utm_campaign=readme\u0026utm_term=bencher\"\u003eview threshold\u003c/a\u003e\u003c/td\u003e\u003ctd\u003e3.43\u003cbr/\u003e(+0.69%)\u003c/td\u003e\u003ctd\u003e3.60\u003cbr/\u003e(95.40%)\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003ca href=\"https://bencher.dev/perf/bencher/benchmarks/3525f177-fc8f-4a92-bd2f-dda7c4e15699?utm_medium=referral\u0026utm_source=github\u0026utm_content=readme\u0026utm_campaign=readme\u0026utm_term=bencher\"\u003eAdapter::Magic (Rust)\u003c/a\u003e\u003c/td\u003e\u003ctd\u003e📈 \u003ca href=\"https://bencher.dev/perf/bencher?branches=bdcbbf3c-9073-4006-b194-b11aff2f94c1\u0026testbeds=0d991aac-b241-493a-8b0f-8d41419455d2\u0026benchmarks=3525f177-fc8f-4a92-bd2f-dda7c4e15699\u0026measures=4358146b-b647-4869-9d24-bd22bb0c49b5\u0026start_time=1699143413000\u0026end_time=1701735487000\u0026upper_boundary=true\"\u003eview plot\u003c/a\u003e\u003cbr/\u003e🚷 \u003ca href=\"https://bencher.dev/perf/bencher/thresholds/f6ade42d-ef45-4533-b6fe-588c1f3e9405?utm_medium=referral\u0026utm_source=github\u0026utm_content=readme\u0026utm_campaign=readme\u0026utm_term=bencher\"\u003eview threshold\u003c/a\u003e\u003c/td\u003e\u003ctd\u003e22.10\u003cbr/\u003e(-0.83%)\u003c/td\u003e\u003ctd\u003e24.73\u003cbr/\u003e(89.33%)\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003ca href=\"https://bencher.dev/perf/bencher/benchmarks/5655ed2a-3e45-4622-bdbd-39cdd9837af8?utm_medium=referral\u0026utm_source=github\u0026utm_content=readme\u0026utm_campaign=readme\u0026utm_term=bencher\"\u003eAdapter::Rust\u003c/a\u003e\u003c/td\u003e\u003ctd\u003e📈 \u003ca href=\"https://bencher.dev/perf/bencher?branches=bdcbbf3c-9073-4006-b194-b11aff2f94c1\u0026testbeds=0d991aac-b241-493a-8b0f-8d41419455d2\u0026benchmarks=5655ed2a-3e45-4622-bdbd-39cdd9837af8\u0026measures=4358146b-b647-4869-9d24-bd22bb0c49b5\u0026start_time=1699143413000\u0026end_time=1701735487000\u0026upper_boundary=true\"\u003eview plot\u003c/a\u003e\u003cbr/\u003e🚷 \u003ca href=\"https://bencher.dev/perf/bencher/thresholds/f6ade42d-ef45-4533-b6fe-588c1f3e9405?utm_medium=referral\u0026utm_source=github\u0026utm_content=readme\u0026utm_campaign=readme\u0026utm_term=bencher\"\u003eview threshold\u003c/a\u003e\u003c/td\u003e\u003ctd\u003e2.31\u003cbr/\u003e(-2.76%)\u003c/td\u003e\u003ctd\u003e2.50\u003cbr/\u003e(92.21%)\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003ca href=\"https://bencher.dev/perf/bencher/benchmarks/1db23e93-f909-40aa-bf42-838cc7ae05f5?utm_medium=referral\u0026utm_source=github\u0026utm_content=readme\u0026utm_campaign=readme\u0026utm_term=bencher\"\u003eAdapter::RustBench\u003c/a\u003e\u003c/td\u003e\u003ctd\u003e📈 \u003ca href=\"https://bencher.dev/perf/bencher?branches=bdcbbf3c-9073-4006-b194-b11aff2f94c1\u0026testbeds=0d991aac-b241-493a-8b0f-8d41419455d2\u0026benchmarks=1db23e93-f909-40aa-bf42-838cc7ae05f5\u0026measures=4358146b-b647-4869-9d24-bd22bb0c49b5\u0026start_time=1699143413000\u0026end_time=1701735487000\u0026upper_boundary=true\"\u003eview plot\u003c/a\u003e\u003cbr/\u003e🚷 \u003ca href=\"https://bencher.dev/perf/bencher/thresholds/f6ade42d-ef45-4533-b6fe-588c1f3e9405?utm_medium=referral\u0026utm_source=github\u0026utm_content=readme\u0026utm_campaign=readme\u0026utm_term=bencher\"\u003eview threshold\u003c/a\u003e\u003c/td\u003e\u003ctd\u003e2.30\u003cbr/\u003e(-3.11%)\u003c/td\u003e\u003ctd\u003e2.50\u003cbr/\u003e(91.87%)\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e\u003c/details\u003e\u003ca href=\"https://bencher.dev/perf/bencher/reports/36a1eeff-57f5-4b99-b058-8c9c240a9f2c?utm_medium=referral\u0026utm_source=github\u0026utm_content=readme\u0026utm_campaign=readme\u0026utm_term=bencher\"\u003e🐰 View full continuous benchmarking report in Bencher\u003c/a\u003e\u003cdiv id=\"bencher.dev/projects/the-computer/id/master/base/magic\"\u003e\u003c/div\u003e\n\n\n### Specify CLI Version\n\nThere is also an optional `version` argument to specify an exact version of the Bencher CLI to use.\nOtherwise, it will default to using the latest CLI version.\n\n```yaml\n- uses: bencherdev/bencher@main\n  with:\n    version: 0.4.37\n```\n\nSpecify an exact version if using [Bencher _Self-Hosted_](https://bencher.dev/docs/explanation/bencher-self-hosted/).\nDo **not** specify an exact version if using Bencher _Cloud_ as there are still occasional breaking changes.\n\n## These Devs Get It\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\n      \u003cp\u003eBencher is like CodeCov for performance metrics.\u003c/p\u003e\n      \u003cbr /\u003e\n      \u003cp align=\"center\"\u003e\n        \u003ca href=\"https://github.com/JonathanWoollett-Light\"\u003e\n          \u003cimg src=\"https://s3.us-east-1.amazonaws.com/public.bencher.dev/customers/JonathanWoollett-Light.jpg\" width=\"48\" height=\"48\" alt=\"Jonathan Woollett-Light\" /\u003e\n        \u003c/a\u003e\n        \u003cbr /\u003e\n        Jonathan Woollett-Light\n        \u003cbr /\u003e\n        \u003ca href=\"https://github.com/JonathanWoollett-Light\"\u003e\n          @JonathanWoollett-Light\n        \u003c/a\u003e\n      \u003c/p\u003e\n    \u003c/td\u003e\n    \u003ctd\u003e\n      \u003cp\u003eI 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.\u003c/p\u003e\n      \u003cbr /\u003e\n      \u003cp align=\"center\"\u003e\n        \u003ca href=\"https://github.com/gpwclark\"\u003e\n          \u003cimg src=\"https://s3.us-east-1.amazonaws.com/public.bencher.dev/customers/gpwclark.jpg\" width=\"48\" height=\"48\" alt=\"Price Clark\" /\u003e\n        \u003c/a\u003e\n        \u003cbr /\u003e\n        Price Clark\n        \u003cbr /\u003e\n        \u003ca href=\"https://github.com/gpwclark\"\u003e\n          @gpwclark\n        \u003c/a\u003e\n      \u003c/p\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\n      \u003cp\u003e95% 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.\u003c/p\u003e\n      \u003cbr /\u003e\n      \u003cp align=\"center\"\u003e\n        \u003ca href=\"https://github.com/jneem\"\u003e\n          \u003cimg src=\"https://s3.us-east-1.amazonaws.com/public.bencher.dev/customers/jneem.jpg\" width=\"48\" height=\"48\" alt=\"Joe Neeman\" /\u003e\n        \u003c/a\u003e\n        \u003cbr /\u003e\n        Joe Neeman\n        \u003cbr /\u003e\n        \u003ca href=\"https://github.com/jneem\"\u003e\n          @jneem\n        \u003c/a\u003e\n      \u003c/p\u003e\n    \u003c/td\u003e\n    \u003ctd\u003e\n      \u003cp\u003eI've been looking for a public service like Bencher for about 10 years :)\u003c/p\u003e\n      \u003cbr /\u003e\n      \u003cp align=\"center\"\u003e\n        \u003ca href=\"https://github.com/jaqx0r\"\u003e\n          \u003cimg src=\"https://s3.us-east-1.amazonaws.com/public.bencher.dev/customers/jaqx0r.png\" width=\"48\" height=\"48\" alt=\"Jamie Wilkinson\" /\u003e\n        \u003c/a\u003e\n        \u003cbr /\u003e\n        Jamie Wilkinson\n        \u003cbr /\u003e\n        \u003ca href=\"https://github.com/jaqx0r\"\u003e\n          @jaqx0r\n        \u003c/a\u003e\n      \u003c/p\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\n      \u003cp\u003eI'm happy with how quickly I was able to get Bencher configured and working.\u003c/p\u003e\n      \u003cbr /\u003e\n      \u003cp align=\"center\"\u003e\n        \u003ca href=\"https://github.com/westonpace\"\u003e\n          \u003cimg src=\"https://s3.us-east-1.amazonaws.com/public.bencher.dev/customers/westonpace.jpg\" width=\"48\" height=\"48\" alt=\"Weston Pace\" /\u003e\n        \u003c/a\u003e\n        \u003cbr /\u003e\n        Weston Pace\n        \u003cbr /\u003e\n        \u003ca href=\"https://github.com/westonpace\"\u003e\n          @westonpace\n        \u003c/a\u003e\n      \u003c/p\u003e\n    \u003c/td\u003e\n    \u003ctd\u003e\n      \u003cp\u003eBencher's main ideas and concepts are really well designed.\u003c/p\u003e\n      \u003cbr /\u003e\n      \u003cp align=\"center\"\u003e\n        \u003ca href=\"https://github.com/freeekanayaka\"\u003e\n          \u003cimg src=\"https://s3.us-east-1.amazonaws.com/public.bencher.dev/customers/freeekanayaka.jpg\" width=\"48\" height=\"48\" alt=\"Free Ekanayaka\" /\u003e\n        \u003c/a\u003e\n        \u003cbr /\u003e\n        Free Ekanayaka\n        \u003cbr /\u003e\n        \u003ca href=\"https://github.com/freeekanayaka\"\u003e\n          @freeekanayaka\n        \u003c/a\u003e\n      \u003c/p\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n## Contributing\n\nThe easiest way to contribute is to open this repo as a [Dev Container](https://containers.dev) in [VSCode](https://code.visualstudio.com/download) by simply clicking one of the buttons below.\nEverything you need will already be there!\nOnce set up, both the UI and API should be built, running, and seeded at [localhost:3000](http://localhost:3000) and [localhost:61016](http://localhost:61016) respectively.\nTo make any changes to the UI or API though, you will have to exit the startup process and restart the UI and API yourself.\n\nFor additional information on contributing, see the [Development Getting Started](DEVELOPMENT.md) guide.\n\n#### 🐰 All pull requests should target the `devel` branch\n\n\u003cbr /\u003e\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://vscode.dev/redirect?url=vscode://ms-vscode-remote.remote-containers/cloneInVolume?url=https://github.com/bencherdev/bencher\"\u003e\n    \u003cimg\n      src=\"https://img.shields.io/static/v1?label=Local%20Dev%20Container\u0026message=Open\u0026color=orange\u0026logo=visualstudiocode\u0026style=for-the-badge\"\n      alt=\"Bencher VSCode Dev Container\"\n    /\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.dev/bencherdev/bencher\"\u003e\n    \u003cimg\n      src=\"https://img.shields.io/static/v1?label=GitHub%20Codespaces\u0026message=Open\u0026color=orange\u0026logo=github\u0026style=for-the-badge\"\n      alt=\"Bencher GitHub Codespaces\"\n    /\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\nThere is also a [pre-built image from CI](https://github.com/orgs/bencherdev/packages/container/package/bencher-dev-container) available for each branch: `ghcr.io/bencherdev/bencher-dev-container`\n\n## License\n\nAll content that resides under any directory or [feature](https://doc.rust-lang.org/cargo/reference/features.html) named \"plus\" is licensed under the [Bencher Plus License](license/LICENSE-PLUS).\n\nAll other content is licensed under the [Apache License, Version 2.0](license/LICENSE-APACHE) or [MIT License](license/LICENSE-MIT) at your discretion.\n\nUnless 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.\n","funding_links":[],"categories":["Rust","MDX","Development tools","Table of Contents","performance","Development","\u003ca name=\"programming\"\u003e\u003c/a\u003eProgramming","Benchmark"],"sub_categories":["Profiling","Testing","Devops","Runner"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbencherdev%2Fbencher","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbencherdev%2Fbencher","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbencherdev%2Fbencher/lists"}