I re-ran my linker performance experiment using configure --with-native-debug-symbols="internal" lld is a big winner here:
--- ld=bfd --- /usr/bin/g++ -fuse-ld=$ld -Wl,--hash-style=both -Wl,-z,defs -Wl,-z,noexecstac 7.30s user 1.26s system 99% cpu 8.559 total /usr/bin/g++ -fuse-ld=$ld -Wl,--hash-style=both -Wl,-z,defs -Wl,-z,noexecstac 6.73s user 1.18s system 99% cpu 7.908 total --- ld=gold --- /usr/bin/g++ -fuse-ld=$ld -Wl,--hash-style=both -Wl,-z,defs -Wl,-z,noexecstac 4.57s user 0.62s system 99% cpu 5.191 total /usr/bin/g++ -fuse-ld=$ld -Wl,--hash-style=both -Wl,-z,defs -Wl,-z,noexecstac 4.67s user 0.53s system 99% cpu 5.209 total --- ld=lld --- /usr/bin/g++ -fuse-ld=$ld -Wl,--hash-style=both -Wl,-z,defs -Wl,-z,noexecstac 2.61s user 1.10s system 330% cpu 1.124 total /usr/bin/g++ -fuse-ld=$ld -Wl,--hash-style=both -Wl,-z,defs -Wl,-z,noexecstac 2.72s user 1.03s system 326% cpu 1.146 total On Thu, Jan 24, 2019 at 10:49 AM Martin Buchholz <marti...@google.com> wrote: > > Here's an experiment using the 3 competing open source linkers to link > hotspot. This confirms that lld is faster than gold is faster than > bfd, but is the one second saving worth the engineering effort? > > $ (BUILDDIR=$HOME/ws/jdk/build/linux-x86_64-server-release; for > linker in bfd gold lld; do echo --- $linker ---; time /usr/bin/g++ > -fuse-ld=$linker -Wl,--hash-style=both -Wl,-z,defs -Wl,-z,noexecstack > -Wl,-O1 -Wl,-z,relro -m64 -static-libstdc++ -static-libgcc -shared > -m64 -Wl,-version-script=$BUILDDIR/hotspot/variant-server/libjvm/mapfile > -Wl,-soname=libjvm.so -o > $BUILDDIR/support/modules_libs/java.base/server/libjvm.so > @$BUILDDIR/hotspot/variant-server/libjvm/objs/_BUILD_LIBJVM_objectfilenames.txt > -lm -ldl -lpthread; done) > --- bfd --- > /usr/bin/g++ -fuse-ld=$linker -Wl,--hash-style=both -Wl,-z,defs > -Wl,-O1 -m6 1.31s user 0.36s system 99% cpu 1.669 total > --- gold --- > /usr/bin/g++ -fuse-ld=$linker -Wl,--hash-style=both -Wl,-z,defs > -Wl,-O1 -m6 0.42s user 0.11s system 99% cpu 0.537 total > --- lld --- > /usr/bin/g++ -fuse-ld=$linker -Wl,--hash-style=both -Wl,-z,defs > -Wl,-O1 -m6 0.25s user 0.20s system 145% cpu 0.310 total