[cfe-dev] Libclang: Bad performance on reparse
Janosch Machowinski via cfe-dev
cfe-dev at lists.llvm.org
Wed Aug 16 01:18:57 PDT 2017
Hi,
while testing kdevelop 5, I ran into some problems with the code completion.
I debugged it and tracked it down to the reparse step in libclang taking
5 seconds in an i7-5930K.
In my concrete example, I got a cpp file that consists of 173 line of code,
with minor template usage.
This program includes a big amount of headers, that use heavy templating.
The initial parse takes 13 seconds, which is fine. What makes me wonder is
the reparse step taking so long, as everything in the headers should be
cached by the PCH.
I prepared a git repo with an example, if you want to look at the code I
used,
or try it yourself.
https://github.com/jmachowinski/clangTest
It should be noted, that I do not set CXTranslationUnit_Incomplete,
as kdevelop needs the flag to be NOT set. Setting the flag speeds up
reparse
to 0.5 seconds.
Greetings
Janosch
Debug output :
Parse start
Precompiling preamble: 8.2960 (100.0%) 0.2760 (100.0%) 8.5720
(100.0%) 8.5706 (100.0%)
Parsing ../test/tdot_asguard.cpp: 4.8320 (100.0%) 0.0200 (100.0%)
4.8520 (100.0%) 4.8499 (100.0%)
ASTContext: expressions, declarations, and types: 254289451
ASTContext: identifiers: 507904
ASTContext: selectors: 4096
ASTContext: side tables: 9053176
Code completion: cached global results: 0
SourceManager: content cache allocator: 86016
SourceManager: malloc'ed memory buffers: 2070147
SourceManager: mmap'ed memory buffers: 0
SourceManager: data structures and tables: 124472904
ExternalASTSource: malloc'ed memory buffers: 0
ExternalASTSource: mmap'ed memory buffers: 188282552
Preprocessor: malloc'ed memory: 306782
Preprocessor: PreprocessingRecord: 838904
Preprocessor: header search tables: 43
Parse took 13.4559
Cache global code completions for ../test/tdot_asguard.cpp: 0.1280
(100.0%) 0.1280 (100.0%) 0.1267 (100.0%)
Reparsing ../test/tdot_asguard.cpp: 5.0600 (100.0%) 0.0440
(100.0%) 5.1040 (100.0%) 5.1043 (100.0%)
ASTContext: expressions, declarations, and types: 259532331
ASTContext: identifiers: 2326528
ASTContext: selectors: 4096
ASTContext: side tables: 9151480
Code completion: cached global results: 4063232
SourceManager: content cache allocator: 111147
SourceManager: malloc'ed memory buffers: 2082327
SourceManager: mmap'ed memory buffers: 0
SourceManager: data structures and tables: 124472904
ExternalASTSource: malloc'ed memory buffers: 0
ExternalASTSource: mmap'ed memory buffers: 188282552
Preprocessor: malloc'ed memory: 8324702
Preprocessor: PreprocessingRecord: 1775864
Preprocessor: header search tables: 43
ReParse took 5.10452
More information about the cfe-dev
mailing list