name: Benchmarks
on:
push:
branches: [main]
pull_request:
branches: [main]
permissions:
contents: write
pull-requests: write
env:
CARGO_TERM_COLOR: always
jobs:
benchmark:
name: Performance Regression Check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: swatinem/rust-cache@v2
with:
prefix-key: bench
- name: Install valgrind
run: sudo apt-get update && sudo apt-get install -y valgrind
- name: Install iai-callgrind-runner
run: cargo install iai-callgrind-runner@0.14.2
- name: Verify iai-callgrind-runner
run: |
which iai-callgrind-runner || echo "$HOME/.cargo/bin/iai-callgrind-runner"
ls -la $HOME/.cargo/bin/ | grep iai || true
- name: Cache iai-callgrind baselines
uses: actions/cache@v4
with:
path: target/iai
key: iai-baseline-${{ runner.os }}-${{ hashFiles('benches/iai_benchmarks.rs') }}
restore-keys: |
iai-baseline-${{ runner.os }}-
- name: Run iai-callgrind benchmarks
run: cargo bench --bench iai_benchmarks
env:
IAI_CALLGRIND_RUNNER: /home/runner/.cargo/bin/iai-callgrind-runner
- name: Upload benchmark results
uses: actions/upload-artifact@v4
with:
name: iai-benchmark-results
path: target/iai/
retention-days: 30