HomePhabricator

Parallelize GdbIndexSection's symbol table creation.

Description

Parallelize GdbIndexSection's symbol table creation.

Since .gdb_index sections contain all known symbols, they can be very large.
One of my executables has a .gdb_index section of 1350 GiB. Uniquifying
symbols by name takes 3.77 seconds on my machine. This patch parallelize it.

Time to call createSymbols() with 8.4 million unique symbols:

Without this patch: 3773 ms
Parallelism = 1:    4374 ms
Parallelism = 2:    2628 ms
Parallelism = 16:    837 ms

As you can see above, this algorithm is a bit more inefficient
than the non-parallelized version, but even with dual-core, it is
faster than that, so I think it is overall a win.

Differential Revision: https://reviews.llvm.org/D49164

Details

Committed
ruiuJul 11 2018, 4:37 AM
Differential Revision
D49164: Parallelize GdbIndexSection's symbol table creation.
Parents
rL336789: [AArch64][SVE] Asm: Support for COMPACT instruction.
Branches
Unknown
Tags
Unknown