# Runs benchmarks. on: pull_request: merge_group: push: branches: [main] env: CARGO_TERM_COLOR: always BASELINE: base IAI_CALLGRIND_RUNNER: iai-callgrind-runner concurrency: group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} cancel-in-progress: true name: bench jobs: iai: runs-on: group: Reth # Only run benchmarks in merge groups and on main if: github.event_name != 'pull_request' steps: - uses: actions/checkout@v4 - name: Install Valgrind run: sudo apt update && sudo apt install valgrind - uses: dtolnay/rust-toolchain@stable - uses: Swatinem/rust-cache@v2 with: cache-on-failure: true - name: Install cargo-binstall uses: taiki-e/install-action@cargo-binstall - name: Install iai-callgrind-runner run: | echo "::group::Install" version=$(cargo metadata --format-version=1 |\ jq '.packages[] | select(.name == "iai-callgrind").version' |\ tr -d '"' ) cargo binstall iai-callgrind-runner --version $version --no-confirm --no-symlinks --force echo "::endgroup::" echo "::group::Verification" which iai-callgrind-runner echo "::endgroup::" - name: Checkout base uses: actions/checkout@v4 with: ref: ${{ github.base_ref || 'main' }} - name: Generate test vectors run: cargo run --bin reth --features dev -- test-vectors tables - name: Save baseline run: cargo bench -p reth-db --bench iai --profile profiling --features test-utils -- --save-baseline=$BASELINE - name: Checkout PR uses: actions/checkout@v4 with: clean: false - name: Compare PR benchmarks run: cargo bench -p reth-db --bench iai --profile profiling --features test-utils -- --baseline=$BASELINE