How to benchmark algorithm performance? #620
Replies: 3 comments
|
Hi @andreacassioli ! Thanks for asking the right questions !
|
|
I think there are (at least) two angles:
My main concern is at the moment (1). In my experience it is very easy to introduce such regressions, and not easy to systematically assess them. Given one of the selling point of BGL is its performance, it would be great to find a way to keep an eye on that. One convenient way to integrate on CI somehow, but with the possibility to run on laptops. Lately at work I have been using https://github.com/benchmark-action/github-action-benchmark combine with Google benchmark. Is there any tooling used by other boost projects? |
|
Yes, regression should be the main focus. For now for "risky" PRs (dependency reduction) I did local benchmarks and copy pasted the results into the PR. It does not scale we agree on this ahah We could copy the setup of Boost.Int128. But graphs are memory bound and I suspect runners on GitHub will come with quite some noise. If it comes to be verified in practice, to identify regressions inside a PR we could build both base and head on the same runner and interleave measurements. But then we have ~150 algorithms x 3 graphs representation x knobs (vecS sets etc) x 10 reps min so the matrix grows fast. In practice we will figure it out little by little, beginning with a naive setup and refining if necessary. I'm fine with google benchmark. |
Uh oh!
There was an error while loading. Please reload this page.
As work on modernizing and hopefully one day expanding the library is under way, how do we assess performance? Is there some establish benchmark to avoid regression?
IMHO it is difficult to systematically assess the performance of such an extensive library, but at least some core components should be monitored (like core searches, or graph manipulations).
This relates to #480.
I would like to hear your opinion.
All reactions