CI regression protection for shipping teams

Stop benchmark regressions before they merge.

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.

  • 7 benchmark adapters
  • Configurable regression threshold
  • Non-zero exit stops the CI job

A benchmark gate your pull request can understand

1. Run benchmarks

Generate an artifact from the benchmark framework already in your CI workflow.

2. Upload and compare

Perfall uploads the current run and compares each metric with its latest sample on your baseline branch, such as main.

3. Gate the regression

Set the allowed percentage. When a harmful change exceeds it, the CLI exits non-zero and fails the CI job.

Supported languages

One benchmark dashboard for the stacks teams already ship

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.

From benchmark run to visible trend in three steps

1

Create a project

Set up a project workspace for the application or service you want to track.

2

Send benchmark results

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

Install CLI pip install perfall-cli
Generate pytest --benchmark-json benchmark.json
Upload perfall ingest pytest-benchmark --file benchmark.json --api-key "$PERFALL_API_KEY"

Go

Install CLI pip install perfall-cli
Generate go test -bench . -benchmem -json ./... > go-benchmark.jsonl
Upload perfall ingest go-test --file go-benchmark.jsonl --api-key "$PERFALL_API_KEY"

Java

Install CLI pip install perfall-cli
Generate java -jar benchmarks.jar -rf json -rff jmh-result.json
Upload perfall ingest jmh --file jmh-result.json --api-key "$PERFALL_API_KEY"

Rust

Install CLI pip install perfall-cli
Generate cargo criterion --message-format=json > cargo-criterion.jsonl
Upload perfall ingest criterion --file cargo-criterion.jsonl --api-key "$PERFALL_API_KEY"

JavaScript / TypeScript

Install CLI pip install perfall-cli
Generate npx vitest bench --outputJson vitest-benchmark.json
Upload perfall ingest vitest --file vitest-benchmark.json --api-key "$PERFALL_API_KEY"

C++

Install CLI pip install perfall-cli
Generate ./benchmarks --benchmark_out=google-benchmark.json --benchmark_out_format=json
Upload perfall ingest google-benchmark --file google-benchmark.json --api-key "$PERFALL_API_KEY"

.NET

Install CLI pip install perfall-cli
Generate dotnet run -c Release --project benchmarks.csproj
Upload perfall ingest benchmarkdotnet --file BenchmarkDotNet.Artifacts/results/MyBenchmarks-report-brief.json --api-key "$PERFALL_API_KEY"

3

Review trend lines

Open the dashboard to compare metrics, watch drift across releases, and catch regressions earlier.

Built for engineering teams that need signal without setup overhead

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.

  • Multiple metrics per project dashboard
  • Time-range views for short, medium, and long-term comparison
  • Shared chart navigation for easier exploration

Account-based pricing with unlimited projects

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

  • 500 benchmark samples/day per account
  • 5 invited collaborators per project
  • Unlimited projects
  • Dashboard and pytest-benchmark CLI ingestion
Start free

Large

€180 / month

  • 25,000 benchmark samples/day per account
  • 50 invited collaborators per project
  • Unlimited projects
  • Capacity for high-volume benchmark programs
Talk to us

Start tracking benchmark performance with less manual work.

Create an account, set up your first project, and make benchmark regressions easier to catch before release day.