Supported Benchmarking Crates
CodSpeed offers compatibility layers for several popular benchmarking crates:divan (recommended)
The most convenient way to run your Rust benchmarks
criterion.rs
A benchmarking crate inspired by the criterion haskell library
libtest (bencher)
The libtest (unstable) benchmark runner
divan
benchmarking framework due to
its extensive features, such as running
type-generic benchmarks. Its popularity is growing rapidly within the Rust ecosystem.
If you’re already using criterion.rs
or
bencher
, consider their respective plugins, as they
require minimal adjustments to work with CodSpeed.
How does CodSpeed work with Rust benchmarks?
Rust, being a compiled language, has CodSpeed integrations that differ from those for interpreted languages. The CodSpeed benchmarking process for Rust occurs at both build time and runtime. To facilitate this, CodSpeed provides:- A
cargo-codspeed
cargo subcommand: used regardless of the benchmarking crate. - Compatibility layers for popular benchmarking crates: chose the appropriate one based on your project’s needs.
cargo-codspeed
To integrate CodSpeed with your Rust codebase, use the cargo
subcommand:
cargo-codspeed. This tool allows you
to run CodSpeed benchmarks without modifying the behavior of the standard
cargo bench
command.
Creating benchmarks with
cargo-codspeed
is the same as with the supported
APIs. So if you already have benchmarks written with one of these, only a
minor import change is required.Due to a limitation of cargo, we currently do not support
build.rustflags
in .cargo/config.toml
file
when using cargo-codspeed
.However, you can use [target.'cfg(all())']
instead of [build]
as a workaround which does the same and is compatible.Installation
To check your benchmarks with CodSpeed, you first need to install thcargo-codspeed
CLI tool:
Usage
No matter which benchmarking crate you’re using, thecargo-codspeed
command is
used to help you build and run the benchmark in a CodSpeed environment.
Cargo WorkspacesIf you’re using CodSpeed within a workspace you can use the
-p
flag to specify
the crate to run the build command on:Build only specific benchmarksBy default, To build only
build
will build and run all the benchmarks in your project.Sometimes you may want to build and run only a subset of your benchmarks. With
the following folder structure:bench1
, you can pass its name as an argument to the build
and
commands:Feature flagsIf you’re using feature flags in your benchmark suite, you can use the
--features
flag to specify the features to enable:Run the built benchmarksBy default,
cargo codspeed run
will run all the built benchmarks (of the
latest cargo codspeed build ...
command you ran).To run only a subset of the built benchmarks, you can do the following:Continue by choosing a benchmarking crate
divan (recommended)
The most convenient way to run your Rust benchmarks