[PATCH] D113820: [lld-macho] Parallelize scanning the symbol tables in export/unexport-ing.
Vy Nguyen via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri Nov 12 17:29:06 PST 2021
oontvoo created this revision.
oontvoo added a reviewer: int3.
Herald added a reviewer: gkm.
Herald added a project: lld-macho.
Herald added a reviewer: lld-macho.
oontvoo requested review of this revision.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.
(Split from D113167 <https://reviews.llvm.org/D113167>)
Benchmarking on one of our large apps which exports a few thousands symbols,
this showed an improvement of ~17%.
x ./LLD_no_parallel.txt
+ ./LLD_with_parallel.txt
N Min Max Median Avg Stddev
x 10 84.01 89.41 88.64 87.693 1.7424061
+ 10 71.9 74.29 72.63 72.753 0.77734663
Difference at 95.0% confidence
-14.94 +/- 1.26763
-17.0367% +/- 1.44553%
(Student's t, pooled s = 1.34912)
(wallclock)
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D113820
Files:
lld/MachO/Driver.cpp
Index: lld/MachO/Driver.cpp
===================================================================
--- lld/MachO/Driver.cpp
+++ lld/MachO/Driver.cpp
@@ -1462,7 +1462,7 @@
createSyntheticSymbols();
if (!config->exportedSymbols.empty()) {
- for (Symbol *sym : symtab->getSymbols()) {
+ parallelForEach(symtab->getSymbols(), [](Symbol *sym) {
if (auto *defined = dyn_cast<Defined>(sym)) {
StringRef symbolName = defined->getName();
if (config->exportedSymbols.match(symbolName)) {
@@ -1474,12 +1474,13 @@
defined->privateExtern = true;
}
}
- }
+ });
} else if (!config->unexportedSymbols.empty()) {
- for (Symbol *sym : symtab->getSymbols())
+ parallelForEach(symtab->getSymbols(), [](Symbol *sym) {
if (auto *defined = dyn_cast<Defined>(sym))
if (config->unexportedSymbols.match(defined->getName()))
defined->privateExtern = true;
+ });
}
for (const Arg *arg : args.filtered(OPT_sectcreate)) {
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D113820.386988.patch
Type: text/x-patch
Size: 1050 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20211113/c971a8bf/attachment.bin>
More information about the llvm-commits
mailing list