-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Easy run time benchmarking in GitHub Actions #2
Comments
Proposed solution: codspeed.ioThis is an online service that does benchmarking, with free accounts for open source projects. It uses cachegrind/callgrind or something similar (see here for a writeup on the idea.) Basically it counts CPU instructions run using a CPU simulator. Benefits:
Downsides:
I feel like not noticing a 50% slowdown or 2× speedup is sufficient to rule out codspeed for anything using compiled code. |
Proposed solution: Double benchmark run,
|
Quansight Labs has a blog post about their benchmarking experience on Github's CI with Their Github Action for trigging benchmarks is defined here: https://github.com/scikit-image/scikit-image/blob/main/.github/workflows/benchmarks.yml |
As the maintainer of a project on GitHub Actions, I would like to be able to have benchmarks run automatically on PRs, telling me when a PR slows things down, or perhaps speeds things up.
(A broader use case is tracking performance over time, but this rules out some of the solutions that work for the narrower use case, and it's not quite as important.)
This is harder than it sounds, because cloud CI runners use whatever random cloud VM you get assigned, which means inconsistent hardware. Inconsistent hardware means inconsistent results for normal benchmarking, so results are hard to compare. See e.g. https://bheisler.github.io/post/benchmarking-in-the-cloud/ for some experiments to show this noise. Traditionally people get around this by having a fixed hardware machine to run the benchmarks, which you can then hook up to CI as a runner machine (Github Actions supports this) but this is brittle and not very scalable across teams.
The text was updated successfully, but these errors were encountered: