necto wrote: > It doesn’t really have an impact on runtime performance in the traditional > sense. When I introduced DRAV, I also tried migrating just our most commonly > used visitors (the one that is called into most often I believe is > `CollectUnexpandedParameterPacksVisitor`), which didn’t affect runtime > performance at all. It’s only after migrating dozens of them that we incurred > some performance regressions, but from what we can tell, that’s because all > those large vtables are slowing down program startup a bit because of dynamic > relocations—the visitor itself is just as fast irrespective of whether RAV or > DRAV is used. > > E.g. > [here](https://llvm-compile-time-tracker.com/compare.php?from=5adb5c05a2e9f31385fbba8b0436cbc07d91a44d&to=b58e589a86c06ba28d4d90613864d10be29aa5ba&stat=instructions%3Au) > when I migrated a few dozen visitors from RAV to DRAV, we observed a > performance regression of about 0.1%; however, compiling Clang itself got 2% > faster and Clang’s binary size decreased by 5%.
Thank you for this info. I found some time to benchmark the difference, and I can confirm, in our downstream code, I did not notice any run-time performance overhead of DRAV, and each use of RAV has about 0.4s compile time penalty and adds ~250KB in the binary size. I see your point, so I'll close this PR. https://github.com/llvm/llvm-project/pull/160065 _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
