Skip to content

CI benchmarking suite #533

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

Open
wants to merge 20 commits into
base: less-getptr
Choose a base branch
from

Conversation

MilesCranmer
Copy link
Contributor

@MilesCranmer MilesCranmer commented Jul 29, 2024

(Merge after #618)

This defines a simple BenchmarkTools.jl suite based on BENCHMARKS.md for the actual benchmark code. Feel free to add other things we should be keeping track of or maybe some integration benchmarks.

This also uses AirspeedVelocity.jl for automatic CI output which parses the output of the benchmark results. Basically every pull request will get a comment like SymbolicML/DynamicExpressions.jl#94 (comment) with all of the performance info. It also measures the change in load time which is quite useful.

I find it nice for catching performance regressions in PRs.

@MilesCranmer
Copy link
Contributor Author

MilesCranmer commented Aug 2, 2024

I added @ericphanson's GC benchmarks here too via git cherry-pick

@MilesCranmer
Copy link
Contributor Author

MilesCranmer commented Aug 2, 2024

Here's the new results, comparing #529 with main:

main dirty main/dirty
basic/@py/pydict/init 0.194 ± 0.006 ms 0.209 ± 0.0064 ms 0.925
basic/@py/pydict/pydel 0.199 ± 0.007 ms 0.217 ± 0.0072 ms 0.915
basic/julia/pydict/init 0.187 ± 0.014 ms 0.195 ± 0.0074 ms 0.959
basic/julia/pydict/pydel 0.191 ± 0.0064 ms 0.209 ± 0.0067 ms 0.917
gc/full 1.07 ± 0.031 s 1.19 ± 0.012 s 0.901
time_to_load 0.666 ± 0.049 s 0.666 ± 0.0045 s 1

Does this make sense? A bit slower GC, but now with thread safety?

@MilesCranmer
Copy link
Contributor Author

MilesCranmer commented Jun 4, 2025

Hey @cjdoris I updated to the proper workflow version of AirspeedVelocity.jl: https://discourse.julialang.org/t/easy-github-benchmarking-with-new-airspeedvelocity-jl/129327.

It uses a job summary. You can see the benchmark results here. Using this, one can quickly check this table on a PR to validate if a change hasn't caused a slowdown or anything. It also now reports memory and allocations which has been useful!

(We can also switch to the GitHub comment version if you prefer.)

Does this sound good to you?

@MilesCranmer

This comment was marked as outdated.

@MilesCranmer MilesCranmer changed the base branch from main to less-getptr June 4, 2025 16:51
@MilesCranmer
Copy link
Contributor Author

MilesCranmer commented Jun 4, 2025

I'm rebasing on #618 to see if that fixes the bus error in the benchmark. The benchmark is heavy on the GC so it makes sense it would hit this kinda stuff.

Edit: yep!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants