Hello,

While investigating performance with different linkers and linker configuration, we discovered that the devkit linker on Linux (both bfd and gold) was a lot slower than the native linker on Ubuntu (23s vs 12s for bfd to link libjvm.so on my machine). They are both the same version (2.30), so this was puzzling.

It turned out to be a difference in how binutils was built. On Ubuntu (and I assume most major Linux vendors), they explicitly set CFLAGS="-O2" when running the build for binutils. I had naively assumed that binutils set reasonable default CFLAGS in their build so have not modified them like this before. I tried adding -O2 for our devkit, and that created a kit with comparable linking performance on par with the Ubuntu linker. Since this seems to be widely done, I assume the change to be quite safe.

With this patch, I'm modifying the devkit creation makefiles to add -O2 when building binutils. I'm also adding --enable-threads so that the user may run the gold linker with --threads (as well as updating a download link which now requires https). For Oracle users, the devkit versions are bumped in jib-profiles.js so the new devkits are used.

Bug: https://bugs.openjdk.java.net/browse/JDK-8217910

Webrev: http://cr.openjdk.java.net/~erikj/8217910/webrev.01/index.html

/Erik

Reply via email to