this post was submitted on 22 Apr 2024
15 points (94.1% liked)
C++
1778 readers
2 users here now
The center for all discussion and news regarding C++.
Rules
- Respect instance rules.
- Don't be a jerk.
- Please keep all posts related to C++.
founded 1 year ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
I wouldn't draw conclusions from random benchmarks like this without at least opening godbolt to see what's going on.
It really could be anything. e.g.
final
may have enabled inlining in more places, but this may have inlined a very uncommon branch in a hot loop, causing way more cache misses when fetching instructions. Writing compilers is hard, and all optimisation passes are using imperfect heuristics.Compiling with PGO might make the results more compelling, if that wasn't already tried.
As a side note, the
final
keyword is only tangentially related with inlining. It's killer feature is removing the need to do pointer dereferencing when calling virtual members of instances of classes that no longer require virtualization.