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 /lldb/source/Core/Debugger.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 'lldb/source/Core/Debugger.cpp')
0 files changed, 0 insertions, 0 deletions

