This is an archive of the discontinued LLVM Phabricator instance.

[ELF] --gdb-index: don't retain NameAttrs
AbandonedPublic

Authored by MaskRay on Feb 15 2019, 2:41 AM.

Details

Reviewers
espindola
Summary

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

Event Timeline

MaskRay created this revision.Feb 15 2019, 2:41 AM
MaskRay edited the summary of this revision. (Show Details)Feb 15 2019, 2:44 AM
MaskRay removed a reviewer: espindola.
MaskRay removed subscribers: emaste, arichardson, arphaman and 2 others.
MaskRay marked an inline comment as done.Feb 15 2019, 2:46 AM
MaskRay added inline comments.
ELF/SyntheticSections.cpp
2521

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.

MaskRay edited the summary of this revision. (Show Details)Feb 15 2019, 2:47 AM
MaskRay edited the summary of this revision. (Show Details)Feb 15 2019, 2:54 AM
MaskRay edited the summary of this revision. (Show Details)Feb 15 2019, 2:57 AM
MaskRay marked an inline comment as not done.Feb 15 2019, 6:21 AM

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).

MaskRay abandoned this revision.Apr 18 2019, 7:21 PM