RFR: 8349378: Build splashscreen lib with SIZE optimization

Matthias Baesken mbaesken at openjdk.org
Thu Feb 6 13:57:22 UTC 2025


The splashscreen lib is currently built with LOW optimization.
This might be fine because it is not very performance critical  (and LOW is not really low when looking at the opt-flags used).
But building it with SIZE optimization makes it 10-20 % smaller on some platforms which helps to reduce image size.

current settings (LOW optimization) :
---------------------------------------------------
2.5M /aix_ppc64/jdk-opt/images/jdk/lib/libsplashscreen.so

468K /macosaarch64/jdk-opt/images/jdk/lib/libsplashscreen.dylib
1.6M /macosaarch64/jdk-opt/images/jdk/lib/libsplashscreen.dylib.dSYM
388K /macosintel64/jdk-opt/images/jdk/lib/libsplashscreen.dylib
1.5M /macosintel64/jdk-opt/images/jdk/lib/libsplashscreen.dylib.dSYM

368K /linux_aarch64/jdk-opt/images/jdk/lib/libsplashscreen.so
1.7M /linux_aarch64/jdk-opt/images/jdk/lib/libsplashscreen.debuginfo
376K /linux_alpine_x86_64/jdk-opt/images/jdk/lib/libsplashscreen.so
1.8M /linux_alpine_x86_64/jdk-opt/images/jdk/lib/libsplashscreen.debuginfo
500K /linux_ppc64le/jdk-opt/images/jdk/lib/libsplashscreen.so
1.7M /linux_ppc64le/jdk-opt/images/jdk/lib/libsplashscreen.debuginfo
364K /linux_x86_64/jdk-opt/images/jdk/lib/libsplashscreen.so
1.7M /linux_x86_64/jdk-opt/images/jdk/lib/libsplashscreen.debuginfo


new settings (SIZE optimization) :
--------------------------------------------------
2.1M /aix_ppc64/jdk-dev-opt/images/jdk/lib/libsplashscreen.so

404K /macosaarch64/jdk-dev-opt/images/jdk/lib/libsplashscreen.dylib
1.5M /macosaarch64/jdk-dev-opt/images/jdk/lib/libsplashscreen.dylib.dSYM
316K /macosintel64/jdk-dev-opt/images/jdk/lib/libsplashscreen.dylib
1.4M /macosintel64/jdk-dev-opt/images/jdk/lib/libsplashscreen.dylib.dSYM

372K /linux_aarch64/jdk-dev-opt/images/jdk/lib/libsplashscreen.so
1.5M /linux_aarch64/jdk-dev-opt/images/jdk/lib/libsplashscreen.debuginfo
304K /linux_alpine_x86_64/jdk-dev-opt/images/jdk/lib/libsplashscreen.so
1.5M /linux_alpine_x86_64/jdk-dev-opt/images/jdk/lib/libsplashscreen.debuginfo
376K /linux_ppc64le/jdk-dev-opt/images/jdk/lib/libsplashscreen.so
1.4M /linux_ppc64le/jdk-dev-opt/images/jdk/lib/libsplashscreen.debuginfo
304K /linux_x86_64/jdk-dev-opt/images/jdk/lib/libsplashscreen.so
1.4M /linux_x86_64/jdk-dev-opt/images/jdk/lib/libsplashscreen.debuginfo

On Linux aarch64 only the debuginfo shrinks but the lib stays about the same in size. Maybe -Os does not work as well on this platform.
Other UNIX platforms have a reduction by ~ 10-20 % .
For Windows, LOW and SIZE optimization have currently the same O - flags so no reduction.

Build times are the same on Windows (because LOW and SIZE are currently 'optimize for size').
On Linux x86_64 it seems that the build times of java.desktop native libs get slightly better but only very little.

time make java.desktop-libs-only JOBS=1

LOW (current)
real   5m38.074s
user   4m16.709s
sys    0m26.335s

real   5m29.081s
user   4m17.838s
sys    0m26.749s

real   5m25.496s
user   4m17.906s
sys    0m25.506s

SIZE for libsplashscreen
real  5m18.468s
user  4m13.024s
sys   0m25.129s

real  5m31.944s
user  4m12.922s
sys   0m26.333s

real  5m12.874s
user  4m12.253s
sys   0m25.206s

real has a bit of variance but  user time is  4m16 / 4m17   for LOW  and  4m12/4m13  for SIZE for libsplashscreen.

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

Commit messages:
 - JDK-8349378

Changes: https://git.openjdk.org/jdk/pull/23493/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=23493&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8349378
  Stats: 1 line in 1 file changed: 0 ins; 0 del; 1 mod
  Patch: https://git.openjdk.org/jdk/pull/23493.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/23493/head:pull/23493

PR: https://git.openjdk.org/jdk/pull/23493


More information about the build-dev mailing list