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

Richard Howell via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Fri Oct 8 12:23:22 PDT 2021


rmaz added a comment.

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

> These are interesting results. I'm curious to measure the time spent in `ASTReader::ReadMethodPool`.

Updated numbers from today, looks like we added a lot more modular deps since last week.

| **Method**  | **# Module File Lookups** | **# Module File Hits** | **# Instance Methods Deserialized** | **# Class Methods Deserialized** | **ms in `ASTReader::ReadMethodPool`** |
| Baseline    | 139140                    | 577                    | 254304                              | 119907                           | 15759                                 |
| Set Dedupe  | 139140                    | 577                    | 38815                               | 19125                            | 421                                   |
| No external | 157677                    | 1595                   | 5036                                | 2428                             | 430                                   |
|

The time taken in `ASTReader::ReadMethodPool` ends up very close. This was previously dominated by `Sema::addMethodToGlobalList`, and both approaches will end up with the same number of calls to this method, so maybe this is not so surprising. The difference comes down to: is it faster to descend into all build dependent modules to deserialize only the methods you need or is it faster to deserialize from the first module with overlap and skip the duplicate inserts with a hashmap lookup. The numbers would suggest the latter, and this approach also has the benefit of requiring no other changes as the method insert order to the global list should be identical.


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