Getting Started
Installation
Install the CodSpeed CLI using the installation script:codspeed auth login.
Installing a specific version
Installing a specific version
To install a specific version:Replace
v4.8.2 with the version you want to install.You can find all available versions on the
releases page.The CodSpeed CLI officially supports Ubuntu 20.04, 22.04, 24.04 and Debian 11,
12. Other Linux distributions may work, but are not officially supported.
Run your first command
Let’s run a simple benchmark using the walltime instrument:Configuration
You can define benchmarks and options in acodspeed.yml configuration file.
Most importantly, items in the benchmarks list describe the commands that are
run when using codspeed run.
Other supported filenames
Other supported filenames
The CodSpeed CLI looks for configuration files with the following names, by order of priority:
codspeed.ymlcodspeed.yaml.codspeed.yml.codspeed.yaml
--config <path>.Benchmark fields
The command to execute. Can include arguments and flags.
A descriptive name for the benchmark. This is used to identify the benchmark
in reports and results.When omitted, the command is used as the benchmark name.
Override global instrument options for this specific benchmark.See the Instruments section for available options for each
instrument and their effects.
Example configuration
codspeed.yml
Running benchmarks
To run all benchmarks defined in your configuration file, specify the instrument with the-m flag:
codspeed exec to run a single command:
Instruments
CodSpeed supports three instruments for measuring different aspects of your program’s performance.Walltime
The walltime instrument measures real-world execution time. It runs your benchmark multiple times and collects timing data.See the Walltime documentation for more details. How it works
- Warmup phase: The benchmark runs repeatedly until the warmup time is reached. This allows the system to reach a steady state.
- Measurement phase: Based on the average time from warmup, the CodSpeed CLI calculates how many rounds to run within the configured time bounds, then collects timing data for each round.
The walltime instrument requires
sudo privileges to run because it needs to
configure the kernel so that linux
perf can collect all the
necessary events.We plan to fine tune permissions in the future to reduce permissions to the
strict minimum.Profiling for interpreted languages (e.g., Python, JavaScript) is not
currently supported with the walltime instrument.We are currently working on it and it’s coming soon!
Walltime Options
Time spent in warmup runs. Set to
0 to disable warmup.Minimum time spent running measurement rounds.
Maximum time spent running measurement rounds.
Minimum number of measurement rounds.
Maximum number of measurement rounds.
If there is a conflict between time and round constraints, the CodSpeed CLI
prioritizes satisfying the maximum bounds first.
Example
- CLI
- Configuration file
Memory
The memory instrument tracks heap allocations during benchmark execution. Unlike walltime, the benchmark runs only once while memory usage is recorded.See the Memory documentation for more details. It measures:
- Peak memory usage
- Total allocated memory
- Allocation count
- Average allocation size
The memory instrument requires
sudo privileges to run because it uses
eBPF to track memory allocations.We plan to fine tune permissions in the future to reduce permissions to the
strict minimum.Example
Simulation
The simulation instrument uses CPU simulation to measure performance. The benchmark runs only once and CPU behavior is simulated, providing consistent measurements independent of system load.See the CPU Simulation documentation for more details. This is the same instrument used by CodSpeed integrations when running in CI.
Profiling for interpreted languages (e.g., Python, JavaScript) is not
currently supported with the simulation instrument.We are currently working on it and it’s coming soon!