Back to Rspack

Rspack Rust benchmarks

xtask/benchmark/README.md

2.0.42.5 KB
Original Source

Rspack Rust benchmarks

Rust benchmark cases live in xtask/benchmark/cases and xtask/benchmark/stages.

Prepare benchmark fixtures

Some benchmark cases use fixtures from .bench/rspack-benchcases. Prepare them before running the full benchmark suite or any bundle-related case:

bash
pnpm run bench:prepare

Run in CI mode

The CI command runs cargo codspeed run directly:

bash
pnpm run bench:rust

When this command is run outside a CodSpeed runner environment, cargo-codspeed may only check benchmarks and print Checked: entries instead of making CPU simulation measurements.

Build benchmark binaries

Use the build helper to run the same CodSpeed build command used by CI:

bash
npm run build:bench

The script expands to:

bash
cargo codspeed build -m simulation --profile codspeed -p rspack_benchmark

This only builds the benchmark binaries for CodSpeed simulation mode. It does not execute measurements.

Run local CPU simulation measurements

Use the local helper script to run benchmarks through the CodSpeed runner in CPU simulation mode:

bash
npm run bench:rust:local

Pass a benchmark name filter after -- to run a single benchmark:

bash
npm run bench:rust:local -- build_chunk_graph

The script expands to:

bash
mkdir -p /tmp/rspack-codspeed-valgrind-tmp && TMPDIR=/tmp/rspack-codspeed-valgrind-tmp RAYON_NUM_THREADS=1 RSPACK_BENCHCASES_DIR=$PWD/.bench/rspack-benchcases codspeed run -m simulation -- cargo codspeed run -m simulation

This command:

  • Creates a stable temporary directory for CodSpeed and Valgrind files
  • Sets TMPDIR so the temporary files are written to that directory
  • Sets RAYON_NUM_THREADS=1 to match the single-threaded CI simulation environment
  • Sets RSPACK_BENCHCASES_DIR to the prepared benchmark fixtures
  • Wraps cargo codspeed run -m simulation in codspeed run -m simulation so local runs use the CodSpeed runner environment instead of only checking benchmarks

A real local simulation run prints Measured: entries. The script sets TMPDIR to /tmp/rspack-codspeed-valgrind-tmp, so CodSpeed and Valgrind temporary files are easy to inspect:

bash
find /tmp/rspack-codspeed-valgrind-tmp -maxdepth 3 -type f

Typical files include profile.*.out/valgrind.log, profile.*.out/runner.log, and vgdb-pipe-* files.

Requirements

Local CPU simulation requires:

  • cargo-codspeed
  • codspeed
  • CodSpeed's Valgrind build

Check the installed tools with:

bash
cargo codspeed --version
codspeed --version
valgrind --version