mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-26 12:43:36 +01:00
22dbb17db3
The algorithm removing duplicates from the Funcs list used to have amortized quadratic time complexity because it was potentially removing each entry using std::vector::erase individually. This patch is now using a erase-remove idiom with an adapted removeIfBinary algorithm. Probably this was made under the assumption that these removals are rare, but there are cases where the case of duplicate entries is occurring frequently. In these cases, the actual runtime was very poor, taking hours to process a single binary of around 1 GiB size including debug info. Another factor contributing to that is the frequent output of the warning, which is now removed. It seems this is particularly an issue with GCC-compiled binaries, rather than clang-built binaries. Reviewed By: clayborg Differential Revision: https://reviews.llvm.org/D102219 |
||
---|---|---|
.. | ||
CMakeLists.txt | ||
DwarfTransformer.cpp | ||
FileWriter.cpp | ||
FunctionInfo.cpp | ||
GsymCreator.cpp | ||
GsymReader.cpp | ||
Header.cpp | ||
InlineInfo.cpp | ||
LineTable.cpp | ||
LookupResult.cpp | ||
ObjectFileTransformer.cpp | ||
Range.cpp |