[PATCH] D57666: [LLD] [COFF] Avoid O(n^2) insertion into PartialSections
Martin Storsjö via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Sun Feb 3 14:07:09 PST 2019
mstorsjo created this revision.
mstorsjo added reviewers: aganea, ruiu, rnk.
Herald added a project: LLVM.
For MinGW, unique partial sections are much more common, e.g. comdat functions get sections named e.g. text$symbol.
A moderate sized example of this contains over 200K Chunks which create 174K unique PartialSections. Prior to SVN r352928 (D57574 <https://reviews.llvm.org/D57574>), linking this took around 1,5 seconds for me, while it afterwards takes around 13 minutes.
The std::find_if in findPartialSection will do a linear scan of the whole container until a match is found. To use something like binary_search or the std::set container's own methods, we'd need to already have a PartialSection*.
Reinstate a proper map instead of having a set with a custom sorting comparator.
A reproduction testcase can be found at https://martin.st/temp/vlc-qt-plugin-repro.zip.
Repository:
rLLD LLVM Linker
https://reviews.llvm.org/D57666
Files:
COFF/Writer.cpp
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D57666.184977.patch
Type: text/x-patch
Size: 3890 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190203/1fb15c80/attachment.bin>
More information about the llvm-commits
mailing list