RFR: 8283323: libharfbuzz optimization level results in extreme build times [v2]

Phil Race prr at openjdk.java.net
Wed Mar 23 22:40:48 UTC 2022


On Wed, 23 Mar 2022 21:13:30 GMT, Magnus Ihse Bursie <ihse at openjdk.org> wrote:

>> [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.
>
> Magnus Ihse Bursie has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Restore HIGHEST for entire lib, just set SIZE to two files

make/modules/java.desktop/lib/Awt2dLibraries.gmk line 487:

> 485: LIBFONTMANAGER_OPTIMIZATION := HIGHEST
> 486: 
> 487: ifneq ($(filter $(TOOLCHAIN_TYPE), gcc clang), )

Can we have a note here that the de-opt is possible because these two files aren't important to OpenJDK ?
If these files were to be renamed in an updated version of harfbuzz, would there be a compilation error ?

-------------

PR: https://git.openjdk.java.net/jdk/pull/7919



More information about the build-dev mailing list