Ausgehend von einer kürzlichen Leseranfrage, einige neue OpenJDK-Leistungsbenchmarks zu sehen, sind hier Benchmarks von OpenJDK 9 bis OpenJDK 18 plus OpenJDK 19-Builds mit frühem Zugriff. Zusätzlich wurden OpenJ9 und GraalVM CE als alternative Implementierungen eingeworfen.
Um diesen Leserwunsch zu erfüllen, wurde für diese Runde von Java-JVM-Benchmarks ein Intel Core i5 12600K mit Ubuntu 22.04 LTS verwendet. Alle getesteten OpenJDK-Builds wurden aus den offiziellen OpenJDK-Binärdateien bezogen und verwendeten zum Zeitpunkt des Tests die neuesten Versionen. Ebenso wurden die Referenz-Binaries von OpenJ9 und GraalVM CE zum Testen verwendet. Außer dem Wechseln der Java-Implementierung für jede Testreihe wurden während des Tests keine weiteren Änderungen vorgenommen. Um die Dinge auf der Standardeinstellung/Out-of-the-Box zu halten, wurden während des Tests keine zusätzlichen Argumente an die Java-Implementierung übergeben, um die Referenzleistung für die JVM-Implementierungen zu betrachten.
Das ist ziemlich einfach und ein direkter Benchmark-Vergleich, also kommen wir zu den Zahlen.
Als erstes kam der sehr grundlegende Java SciMark 2.0-Test, bei dem es unter den OpenJDK-Versionen keine großen Änderungen an der JVM-Leistung gab. OpenJ9 schnitt hier gut ab und war mit den schnellsten OpenJDK-Ergebnissen ausgerichtet – das waren die OpenJ9-Builds gegenüber JDK 8/11, während der JDK 18-Build zusammen mit den GraalVM CE-Builds viel langsamer war.
OpenJ9 schnitt viel langsamer ab als OpenJDK und GraalVM im Sparse Matrix Multiply-Test.
Aber die OpenJ9 JDK 8/11-Builds schnitten viel schneller ab als die anderen für die Dense LU Matrix Factorization.
OpenJ9 schnitt langsamer ab als die andere getestete JVMs, wenn es um den Bork-Dateiverschlüsseler ging.
OpenJ9 schnitt auch beim H2 DaCapo-Benchmark langsamer ab als die anderen. GraalVM CE lieferte hier die schnellsten Ergebnisse, während OpenJDK 18 und 19 beide erfolgreich die schnellsten getesteten OpenJDK-Versionen waren.
Der Jython-Test von DaCapo Benchmark zeigte auch, dass OpenJDK 18 und 19 EA einen leichten Vorsprung vor den älteren Versionen und Alternativen haben Implementierungen.
In einigen der Benchmarks mit Renaissance konnte OpenJDK 8 immer noch mit knappen Vorsprung führen.
Oracles GraalVM CE schnitt in einigen der Renaissance-Benchmarks im Vergleich zu sehr gut ab OpenJDK.
OpenJ9 konnte einige der Renaissance-Benchmarks nicht erfolgreich ausführen.
Das geometrische Mittel gilt für alle Java-Benchmarks, bei denen sie erfolgreich über alle JVM-Versionen/Implementierungen hinweg getestet wurden im Test. OpenJDK 18 und insbesondere der frühe Zugriff auf OpenJDK 19 sehen insgesamt recht gut aus, was die Leistung betrifft, und in einigen Fällen erreicht oder übertrifft sie endlich den alten OpenJDK 8-Build. GraalVM CE schnitt auch in ausgewählten Benchmarks sehr gut ab, ebenso wie OpenJ9 in einigen ausgewählten Bereichen.
Oder oben ist ein Blick auf das geometrische Mittel aller Ergebnisse, nachdem die OpenJ9-Läufe fallen gelassen wurden, da sie nicht liefen einige der Renaissance-Benchmarks. Dieser größere Datenmix zeigt, dass Oracle GraalVM CE mit der Leistung von OpenJDK durchaus konkurrenzfähig ist. OpenJDK 19 in seiner EA-Form sieht aus Performance-Sicht recht gut aus. OpenJDK 19 GA wird im September erwartet.
Diejenigen, die alle diese JVM-Benchmark-Ergebnisse vollständig durchgehen möchten, können dies über diese Ergebnisseite. Auch hier war das Testen nur als Standard-/Out-of-the-Box-Blick auf die JVM-Leistung in diesen OpenJDK-Versionen und alternativen Implementierungen gedacht. Hier sind Benchmarks von OpenJDK 9 bis OpenJDK 18 plus die OpenJDK 19-Builds für den frühen Zugriff. Zusätzlich wurden OpenJ9 und GraalVM CE als alternative Implementierungen hinzugefügt.