Gerade habe ich etwas mit jlink/jpackage rumgespielt und dabei ist mir etwas aufgefallen: die Startzeit der von jpackage erzeugten App-Images.
Fangen wir mal von vorne an: System ist ein Ubuntu 20.04.4 auf einem Uralt-Rechner (ja, der mit der Kurbel), Java:
Normaler Start:
Die Werte schwanken natürlich immer ein klein wenig, mal sind es 0,200s, mal nur 0,150s.
Als modulare Anwendung:
Hier ist die Schwankungsbreite wesentlich größer: 0,3 bis 0,8s. Wenn ich per jlink ein Runtime mit CDS erstelle, sieht das ähnlich aus.
Ist ja das schon grenzwertig. Den Vogel aber schießt jpackage ab:
Lass ich jpackage machen, was es will:
kann man da nochmal eine halbe Sekunde drauflegen.
Äh, 0,168s vs. 1,832s (ich hab auch schon über 2s gesehen)... Was soll das?
Fangen wir mal von vorne an: System ist ein Ubuntu 20.04.4 auf einem Uralt-Rechner (ja, der mit der Kurbel), Java:
Code:
java --version
openjdk 17.0.2 2022-01-18 LTS
OpenJDK Runtime Environment (build 17.0.2+9-LTS)
OpenJDK 64-Bit Server VM (build 17.0.2+9-LTS, mixed mode, sharing)
Normaler Start:
Code:
time java -cp target/fraction.jar fraction.App
real 0m0,168s
user 0m0,137s
sys 0m0,050s
Als modulare Anwendung:
Code:
time java -p target/fraction.jar -m fraction/fraction.App
real 0m0,652s
user 0m0,416s
sys 0m0,088s
Code:
jlink --output runtime -p target/fraction.jar --add-modules fraction --no-header-files --no-man-pages --compress=0 --strip-debug
runtime/bin/java -Xshare:dump
Ist ja das schon grenzwertig. Den Vogel aber schießt jpackage ab:
Code:
jpackage --name fraction -m fraction/fraction.App --runtime-image runtime --type app-image --java-options "-Xshare:on"
time bin/fraction
real 0m1,363s
user 0m0,731s
sys 0m0,421s
Lass ich jpackage machen, was es will:
Code:
jpackage --name fraction -p target/fraction.jar -m fraction/fraction.App -t app-image
Äh, 0,168s vs. 1,832s (ich hab auch schon über 2s gesehen)... Was soll das?