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 }}