diff options
author | Benjamin Kramer <benny.kra@googlemail.com> | 2012-01-14 16:32:05 +0000 |
---|---|---|
committer | Benjamin Kramer <benny.kra@googlemail.com> | 2012-01-14 16:32:05 +0000 |
commit | b009517ad48365a16f45d482deea28a4af40ebaa (patch) | |
tree | ff09dac49d9c6ccb6d4fe3c6a04c30e678f12eca /clang/lib/AST/DumpXML.cpp | |
parent | fb761ff54452fe837b82210b79e00b19117799eb (diff) | |
download | bcm5719-llvm-b009517ad48365a16f45d482deea28a4af40ebaa.tar.gz bcm5719-llvm-b009517ad48365a16f45d482deea28a4af40ebaa.zip |
Pool allocate ImplicitConversionSequences.
To avoid malloc thrashing give OverloadCandidateSet an inline capacity for conversion sequences.
We use the fact that OverloadCandidates never outlive the OverloadCandidateSet and have a fixed
amount of conversion sequences.
This eliminates the oversized SmallVector from OverloadCandidate shrinking it from 752 to 208 bytes.
On the test case from the "Why is CLANG++ so freaking slow" thread on llvmdev this avoids one gig
of vector reallocation (including memcpy) which translates into 5-10% speedup on Lion/x86_64.
Overload candidate computation is still the biggest malloc contributor when compiling templated
c++ code.
llvm-svn: 148186
Diffstat (limited to 'clang/lib/AST/DumpXML.cpp')
0 files changed, 0 insertions, 0 deletions