[all-commits] [llvm/llvm-project] 668309: [ELF] Optimize RelocationSection<ELFT>::writeTo
Fangrui Song via All-commits
all-commits at lists.llvm.org
Tue Dec 21 09:43:56 PST 2021
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: 6683099a0d0a17fcde3576733e9c85e3b5f71de5
https://github.com/llvm/llvm-project/commit/6683099a0d0a17fcde3576733e9c85e3b5f71de5
Author: Fangrui Song <i at maskray.me>
Date: 2021-12-21 (Tue, 21 Dec 2021)
Changed paths:
M lld/ELF/OutputSections.cpp
M lld/ELF/SyntheticSections.cpp
M lld/ELF/SyntheticSections.h
Log Message:
-----------
[ELF] Optimize RelocationSection<ELFT>::writeTo
When linking a 1.2G output (nearly no debug info, 2846621 dynamic relocations) using `--threads=8`, I measured
```
9.131462 Total ExecuteLinker
1.449913 Total Write output file
1.445784 Total Write sections
0.657152 Write sections {"detail":".rela.dyn"}
```
This change decreases the .rela.dyn time to 0.25, leading to 4% speed up in the total time.
* The parallelSort is slow because of expensive r_sym/r_offset computation. Cache the values.
* The iteration is slow. Move r_sym/r_addend computation ahead of time and parallelize it.
With the change, the new encodeDynamicReloc is cheap (0.05s). So no need to parallelize it.
Reviewed By: ikudrin
Differential Revision: https://reviews.llvm.org/D115993
More information about the All-commits
mailing list