prperf

Quick start

Add a few lines to your CI and open a PR. prperf measures your Ruby benchmark with the open-source rperf profiler and reports base→head on the Check Run, without ever blocking CI. Public repositories need no App install.

Setup

1. Provide a benchmark The command you want to measure. Here we measure boot with bin/rails runner "".
2. Add the workflow Run it on both push (the default branch) and pull_request. The action writes the Check Run with the workflow token — no install needed.
Private repos only Install the prperf GitHub App so it can write the Check Run on a private repository. Public repos skip this.

Drop this in .github/workflows/prperf.yml:

name: prperf
on:
  push:
    branches: [main, master]   # records the base (default branch; list both so main or master works)
  pull_request:                # compared against the base
jobs:
  bench:
    runs-on: ubuntu-latest
    permissions:
      contents: read           # checkout
      id-token: write          # OIDC upload (no secrets)
      checks: write            # write the Check Run (public repos)
      pull-requests: write     # sticky comment (public repos)
    steps:
      - uses: actions/checkout@v6
      - uses: ruby/setup-ruby@v1
        with: { bundler-cache: true }
      - uses: rperf-dev/prperf-action@v1
        with:
          run: bin/rails runner ""   # your measurement command (step 1) — no rperf incantation

Put rperf in your Gemfile (a group :rperf is fine) so the action can measure with it — it runs your run: command under rperf, unchanged. Threshold alerts, multiple benchmarks (benchmark), comment control (comment), and run count (count, default 3, median) are available too.

Results

On each PR, the result shows up right in the PR's Checks as a summary compared against the base. A comment is posted only when a threshold is exceeded, and the flamegraph diff shows which method got heavier.

Every PR and push also records a measurement, so you can browse the history over time at prperf.atdot.net.

prperf never blocks CI and needs no secrets. PRs from forks can't be measured (no OIDC token), and during the free beta only public repositories are supported (private repositories arrive with paid plans).

Next, the full guide — setup, writing good benchmarks, and reading the results — is in the prperf manual.

Read the prperf manual