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 client-libs-dev mailing list