mirror of
https://github.com/danbulant/oxc
synced 2026-05-24 20:32:10 +00:00
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.
68 lines
2 KiB
YAML
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 }}
|