
Example of a walltime benchmark run
Multiple benchmark processesWith the walltime instrument, you should try and avoid running multiple
benchmark processes in parallel since this can lead to noisy measurements.Thus, using
pytest-xdist
or similar tools is not recommended.Automated Profiling
When using the walltime instrument, CodSpeed automatically collects profiling data and generates flame graphs for each benchmark. This allows you to quickly identify performance changes and their root causes.
Supported languages and integrationsAt the moment, the walltime instrument is supported for the following languages
and integrations:
- Python:
pytest-codspeed >= 3.0.0
- Rust
- C++:
codspeed-google-benchmark >= 1.0.0
- Node.js
- Go:
codspeed-go >= 0.3.0
Usage with GitHub Actions
Requirements:CodSpeedHQ/action >= 3.1.0
runs-on: ubuntu-latest
line with runs-on: codspeed-macro
and
use the mode: walltime
option in the action:
CachingIf you’re using caches in the GitHub action workflow, make sure your cache keys
include
runner.arch
to avoid cache misses since CodSpeed Macro runners are
running on the ARM64 architecture.For example:Usage on personal GitHub accounts
At the moment, the macro runners are only available for organizations and not for personal accounts. This is because registering GitHub self-hosted runners on repositories instead of organizations would require the Repository: Administration (Read/Write) permission, which is too broad. To use the macro runners on a repository owned by a personal GitHub account, the only solution is to create a new organization and transfer the repository to that organization.Usage on public repositories
By default, the macro runners are only available for the private repositories of your organization. If you want to use them on a public repository, you’ll need to explicitly allow them from your GitHub organization settings (under Organization Settings > Actions > Runner groups > Default).