[clang] Introduce paged vector (PR #66430)

Giulio Eulisse via cfe-commits cfe-commits at lists.llvm.org
Fri Sep 15 02:12:01 PDT 2023


ktf wrote:

@ChuanqiXu9 I have added a simple unit test, which has 100% code coverage as far as I can tell and covers the usecase the container will be used for.

@nikic This is in the context of improving the memory used when loading modules, in particular my usecase is the runtime overhead of the ROOT/cling C++ interpreter / I/O subsystem.

Without this patch, the initialisation of the system, which on startup loads a bunch of unneeded modules, grows to up 80 MB as you can see from:

![image](https://github.com/llvm/llvm-project/assets/10544/9c2c7dc3-8e64-403c-a923-97a40cd8f1ff)

With this patch applied, the total overhead goes down to 52MB:

![image](https://github.com/llvm/llvm-project/assets/10544/56111b37-fa0e-415d-8d00-0bcd818db3aa)

As you can see the `ROOT::Internal::GetROOT2()` initialisation method goes from 67 to 30 MB (with some of the allocations which are now moved later on, due to the lazy allocation of the PagedVector).

https://github.com/llvm/llvm-project/pull/66430


More information about the cfe-commits mailing list