Getting Started
CodSpeed is a performance testing tool helping you to consistently measure the performance of your codebase locally and in your CI/CD pipeline. More details on how CodSpeed works here: What is CodSpeed?
This guide is a quick start to get a sample Python repository on GitHub up and running with CodSpeed:
- Create Performance Tests
- Connect your Repository
- Run the Tests in your CI
- Introduce a Performance Regression
Create Performance Tests
-
Install the CodSpeed plugin for
pytest
:pip install pytest-codspeed
-
Write a performance test using the
@pytest.mark.benchmark
marker:tests/test_sum_squares.pyimport pytest
def sum_squares(arr):
"""Sum the squares of the numbers in an array."""
total = 0
for x in arr:
total += x * x
return total
# Your tests can also be benchmarks
@pytest.mark.benchmark
def test_sum_squares():
assert sum_squares(range(1000)) == 332833500 -
Run your performance tests locally:
Great! We set up our first performance test. Now, let's track the performance in the CI with CodSpeed!
Connect your Repository
-
Go to settings and install the CodSpeed GitHub App by clicking on the "Import" button.
-
Select the organization or the user and add the repositories you want to use with CodSpeed:
-
Back in CodSpeed settings, enable your repositories by clicking on the "Enable" button:
-
Copy your
CODSPEED_TOKEN
and add it to your GitHub repository secrets
Run the Tests in your CI
-
Create a new GitHub Actions workflow file to run your benchmarks:
.github/workflows/codspeed.ymlname: CodSpeed
on:
push:
branches:
- main # Run on pushes to the main branch
pull_request: # Run on all pull requests
jobs:
codspeed:
name: Run benchmarks
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.13"
- name: Install dependencies
run: pip install pytest pytest-codspeed
- uses: CodSpeedHQ/action@v3
with:
run: pytest tests/ --codspeed
token: ${{ secrets.CODSPEED_TOKEN }} # Optional for public repositories -
Create a Pull Request installing the workflow to the repository and wait for the report in the comments:
-
Merge it and congrats 🎉, CodSpeed is installed!
Introduce a Performance Regression
-
Let's change the implementation of the
sum_squares
with a more concise and elegant one:tests/test_sum_squares.pydef sum_squares(arr):
"""Sum the squares of the numbers in an array."""
total = 0
for x in arr:
total += x * x
return total
return sum(map(lambda x: x**2, arr)) -
Open a Pull Request and wait for the CodSpeed report:
Before merging, we can see that even if it's more concise, this new implementation is slower. Merging it would have introduced a performance regression but we caught it before shipping it!
Next Steps
- What is CodSpeed?: find out more details on how CodSpeed works
- Explore the Performance Metrics: understand the performance metrics generated by CodSpeed
- Enforce Performance Checks: make sure you or team members never merge unexpected performance regressions
- Dive in Trace Generation: get detailed performance traces for your benchmarks