[PATCH] D109632: [clang] de-duplicate methods from AST files
Richard Howell via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Tue Sep 28 11:15:15 PDT 2021
rmaz added a comment.
In D109632#3022209 <https://reviews.llvm.org/D109632#3022209>, @vsapsai wrote:
> That patch looks correct, I was experimenting with exactly the same local change. Have you tried D110123 <https://reviews.llvm.org/D110123> on your original build? In my testing with synthetic test case it looks as good as set deduplication.
I am getting some pretty unexpected results from this approach. For the files I could get to complete below are the compilation times for each approach for the 10 slowest (in the baseline) files:
| **file** | **baseline** | **set deduplication** | **no external methods in pcm** |
| Total | 95.57 | 75.30 | 306.46 |
| IGSFCVC.m | 4.57 | 1.53 | 13.71 |
| IGVFVC.mm | 4.19 | 1.61 | 27.93 |
| IGMFAHC.mm | 4.00 | 1.93 | 9.94 |
| IGMFLCVC.m | 3.89 | 1.55 | 12.30 |
| PLRFPPC.mm | 3.19 | 3.26 | 3.99 |
| IGBFPVC.m | 3.18 | 1.11 | 28.92 |
| IGBVC.m | 2.37 | 0.98 | 17.42 |
| PLRRM.mm | 1.99 | 1.99 | 2.31 |
| IGBSPSC.m | 1.88 | 0.85 | 14.38 |
|
All of the most interesting files were left out of these results as I could not get compilation to complete for the no external methods approach.
> I still think it is worth to pursue writing only owned methods in `METHOD_POOL`. Deduplication with a DenseSet works but I still expect it to be more expensive than avoiding duplicates by construction. As for the next step I was thinking about changing `ASTMethodPoolTrait` to skip transitive methods during serialization and it should help with eliminating all the duplicates. With that change we can test and see how it works.
I will take a go at this approach to eliminate all external methods and compare to see if this exhibits similar behaviour.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D109632/new/
https://reviews.llvm.org/D109632
More information about the cfe-commits
mailing list