name: Benchmarks
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
benchmark:
name: Performance Regression Detection
runs-on: ubuntu-latest
timeout-minutes: 60
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y libcairo2-dev libpango1.0-dev libglib2.0-dev
- name: Build optimized binary
run: cargo build --release
env:
RUSTFLAGS: -D warnings
- name: Run Criterion micro-benchmarks
run: cargo bench --bench criterion_benchmarks -- --verbose
env:
RUSTFLAGS: -D warnings
continue-on-error: true
- name: Run Divan micro-benchmarks
run: cargo bench --bench divan_benchmarks
env:
RUSTFLAGS: -D warnings
continue-on-error: true
- name: Upload Criterion HTML reports
if: always()
uses: actions/upload-artifact@v4
with:
name: criterion-reports
path: target/criterion