1. Run benchmarks
Generate an artifact from the benchmark framework already in your CI workflow.
CI regression protection for shipping teams
Run your benchmarks in CI, compare every pull request with the latest result on
main, and fail the job when a regression crosses your threshold—before
slower code reaches a release.
Generate an artifact from the benchmark framework already in your CI workflow.
Perfall uploads the current run and compares each metric with its latest sample on
your baseline branch, such as main.
Set the allowed percentage. When a harmful change exceeds it, the CLI exits non-zero and fails the CI job.
Supported languages
Perfall ships one standalone Python client package, perfall-cli, with built-in adapters so teams can keep one trend history even
when services are written in different languages.
Python
Use pytest-benchmark JSON output.
Go
Upload go test -bench -benchmem -json results.
Java
Send JMH JSON results from benchmark runs.
Rust
Ingest cargo criterion --message-format=json output.
JavaScript / TypeScript
Track Vitest benchmark JSON artifacts.
C++
Use Google Benchmark JSON exports.
.NET
Upload BenchmarkDotNet JSON reports.
1
Set up a project workspace for the application or service you want to track.
2
Install the standalone perfall-cli package from PyPI once, then pick
the adapter that matches your benchmark output. Need the full guide? Open
the ingestion docs.
Python
pip install perfall-cli
pytest --benchmark-json benchmark.json
perfall ingest pytest-benchmark --file benchmark.json --api-key "$PERFALL_API_KEY"
Go
pip install perfall-cli
go test -bench . -benchmem -json ./... > go-benchmark.jsonl
perfall ingest go-test --file go-benchmark.jsonl --api-key "$PERFALL_API_KEY"
Java
pip install perfall-cli
java -jar benchmarks.jar -rf json -rff jmh-result.json
perfall ingest jmh --file jmh-result.json --api-key "$PERFALL_API_KEY"
Rust
pip install perfall-cli
cargo criterion --message-format=json > cargo-criterion.jsonl
perfall ingest criterion --file cargo-criterion.jsonl --api-key "$PERFALL_API_KEY"
JavaScript / TypeScript
pip install perfall-cli
npx vitest bench --outputJson vitest-benchmark.json
perfall ingest vitest --file vitest-benchmark.json --api-key "$PERFALL_API_KEY"
C++
pip install perfall-cli
./benchmarks --benchmark_out=google-benchmark.json --benchmark_out_format=json
perfall ingest google-benchmark --file google-benchmark.json --api-key "$PERFALL_API_KEY"
.NET
pip install perfall-cli
dotnet run -c Release --project benchmarks.csproj
perfall ingest benchmarkdotnet --file BenchmarkDotNet.Artifacts/results/MyBenchmarks-report-brief.json --api-key "$PERFALL_API_KEY"
3
Open the dashboard to compare metrics, watch drift across releases, and catch regressions earlier.
Perfall is designed for teams that already run benchmarks and want an easier way to keep the history useful. Instead of scattered logs or one-off scripts, teams get a focused place to review benchmark behavior over time.
Every tier includes unlimited projects. Pricing scales with account-wide benchmark samples/day and invited collaborators per project. Quota resets at 00:00 UTC.
Free
€0 / month
Team
€40 / month
Large
€180 / month
Create an account, set up your first project, and make benchmark regressions easier to catch before release day.