RFR: 8283323: libharfbuzz optimization level results in extreme build times
Magnus Ihse Bursie
ihse at openjdk.java.net
Wed Mar 23 12:33:05 UTC 2022
[JDK-8247872](https://bugs.openjdk.java.net/browse/JDK-8247872) (upgrade HarfBuzz to 2.7.2) caused build time to go up with 24 seconds on my reference linux machine. This was one of the four culprits that caused a 25-30% build time regression over the last two years.
The problem here was that the new HarfBuzz code caught really bad behaviour from gcc when compiling with optimizations. The official HarfBuzz build does not use any -O flags at all for gcc, so presumably the HarfBuzz team is:
a) not thinking compiler optimization is important for the performance of this library, and
b) unaware that their code causes such a headache for gcc.
(Other compilers fare much better: visual studio makes no difference at all, and for clang just a small regression was observed.)
The current optimization level was introduced by [JDK-8255790](https://bugs.openjdk.java.net/browse/JDK-8255790), which were really about moving libharfbuzz compilation back into libfontmanager. I could find no comments/discussion relating to the change of optimization level, so I assume it was incidental, and just seemed good at the time.
This patch changes the optimization level to `SIZE` (which is the closest thing we have to no optimization level) on gcc.
-------------
Commit messages:
- 8283323: libharfbuzz optimization level results in extreme build times
Changes: https://git.openjdk.java.net/jdk/pull/7919/files
Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=7919&range=00
Issue: https://bugs.openjdk.java.net/browse/JDK-8283323
Stats: 8 lines in 1 file changed: 7 ins; 0 del; 1 mod
Patch: https://git.openjdk.java.net/jdk/pull/7919.diff
Fetch: git fetch https://git.openjdk.java.net/jdk pull/7919/head:pull/7919
PR: https://git.openjdk.java.net/jdk/pull/7919
More information about the build-dev
mailing list