[PATCH] D109632: [clang] de-duplicate methods from AST files

Richard Howell via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Mon Oct 4 15:23:42 PDT 2021


rmaz added a comment.

In D109632#3037501 <https://reviews.llvm.org/D109632#3037501>, @vsapsai wrote:

> My assumption was that all dependent modules are in memory at this point. And we visit transitive modules only once, so I don't expect it to be a big performance hit (though I can be wrong). And deserializing methods from different modules shouldn't be more work because we are deserializing fewer methods than with "set dedupe".

I added some stats collection for the number of methods deserialized, here are the results from the slowest file in the above table:

| **Method**  | **# Module File Lookups** | **# Module File Hits** | **# Instance Methods Deserialized** | **# Class Methods Deserialized** |
| Baseline    | 34023                     | 129                    | 82005                               | 29298                            |
| Set Dedupe  | 34023                     | 129                    | 13743                               | 6781                             |
| No external | 45265                     | 960                    | 4010                                | 1704                             |
|

So while the no external approach has ~3.5x fewer methods to deserialize, it has to visit ~7.5x as many module files to deserialize methods from.


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