PECOFF: Parallelize base relocation creation.
authorRui Ueyama <ruiu@google.com>
Sun, 8 Mar 2015 02:44:53 +0000 (02:44 +0000)
committerRui Ueyama <ruiu@google.com>
Sun, 8 Mar 2015 02:44:53 +0000 (02:44 +0000)
commit31777ce9a13537c781f538b20608642bac32ff70
treeed520ed69bbf761da04a8418b1861ab9fe2ba10d
parent8ade9837342136f1d53685b3042a4494828c28da
PECOFF: Parallelize base relocation creation.

If an output is large, its base relocation section can be also large.
For example, chrome.dll is almost 300 MB, and it has about 9 million
base relocations. Creating the section took 1.5 seconds on my machine.

This patch changes the way to create the section so that we can use
parallel_sort to group base relocations by high bits. This change
makes the linker almost 4% faster for the above test case on my machine.
If I replace parallel_sort with std::sort, performance remains the same,
so single thread performance should remain the same.

This has no functionality change. The output should be identical as
before.

llvm-svn: 231585
lld/lib/ReaderWriter/PECOFF/WriterPECOFF.cpp