oxc/.github/workflows/benchmark.yml
overlookmotel 1baf9c33d2
ci: run benchmarks on branches called bench-* (#2365)
I've recently switched over from hacking on a fork to working directly
on upstream, in order to be able to use Graphite.

One thing I miss now is ability to create branches and run CodSpeed on
them while developing. Compared to running benches locally, CodSpeed has
the advantage of giving you a visual history, showing how each commit
you push moves the dials.

This PR makes the benchmarks run for any branch named `bench-*`, in
order to enable this workflow on upstream, without having to open a
draft PR for every experiment.
2024-02-09 20:57:37 +08:00

68 lines
2 KiB
YAML

name: Benchmark
on:
workflow_dispatch:
pull_request:
types: [opened, synchronize]
paths:
- '**/*.rs'
- 'Cargo.lock'
- '.github/workflows/benchmark.yml'
- '!crates/oxc_codegen'
push:
branches:
- main
- bench-*
paths:
- '**/*.rs'
- 'Cargo.lock'
- '.github/workflows/benchmark.yml'
- '!crates/oxc_codegen'
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
cancel-in-progress: true
jobs:
benchmark:
name: Benchmark
runs-on: ubuntu-latest
steps:
- name: Checkout Branch
uses: actions/checkout@v4
with:
progress: false
persist-credentials: false
- name: Install Rust Toolchain
uses: ./.github/actions/rustup
with:
shared-key: 'benchmark'
save-cache: ${{ github.ref_name == 'main' }}
- name: Install codspeed
uses: taiki-e/install-action@v2
with:
tool: cargo-codspeed
- name: Build Benchmark
env:
RUSTFLAGS: "-C debuginfo=2 -C strip=none -g --cfg codspeed"
shell: bash
run: |
cargo build --release -p oxc_benchmark --features codspeed --bench lexer --bench parser --bench transformer --bench semantic --bench linter --bench minifier
mkdir -p target/codspeed/oxc_benchmark/
mv target/release/deps/lexer-* target/codspeed/oxc_benchmark
mv target/release/deps/parser-* target/codspeed/oxc_benchmark
mv target/release/deps/transformer-* target/codspeed/oxc_benchmark
mv target/release/deps/semantic-* target/codspeed/oxc_benchmark
mv target/release/deps/linter-* target/codspeed/oxc_benchmark
mv target/release/deps/minifier-* target/codspeed/oxc_benchmark
rm -rf target/codspeed/oxc_benchmark/*.d
- name: Run benchmark
uses: CodSpeedHQ/action@v2
timeout-minutes: 30
with:
run: cargo codspeed run
token: ${{ secrets.CODSPEED_TOKEN }}