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