Tested a large internal target on a machine with 6 cores.
Before: 25.245s 13.73GiB
After: 31.198s 12.9GiB
/usr/bin/gold (Debian): 145.07s 12.07GiB
lld --no-gdb-index: 21.198s 9.12GiB
Differential D58276
[ELF] --gdb-index: don't retain NameAttrs AbandonedPublic Authored by MaskRay on Feb 15 2019, 2:41 AM.
Details
Summary Tested a large internal target on a machine with 6 cores. Before: 25.245s 13.73GiB /usr/bin/gold (Debian): 145.07s 12.07GiB lld --no-gdb-index: 21.198s 9.12GiB
Diff Detail
Event TimelineComment Actions I experimented an enhancement: strip-mining on Sections: https://reviews.llvm.org/differential/diff/187004/ it is more complex (but still simpler than the original code) and slightly faster (28.*s).
Revision Contents
Diff 186984 ELF/SyntheticSections.cpp
|
The lost of parallelism happens here. If there is some parallel primitive to partition threads into 2 groups, a better scheme is for one group to call readPubNamesAndTypes, the other group to work on NameAttrs.