Java Benchmarks: OpenJDK 8 Through OpenJDK 19 EA, OpenJ9, GraalVM CE
Stemming from a recent reader request around seeing some fresh OpenJDK performance benchmarks, here are benchmarks of OpenJDK 9 through OpenJDK 18 plus the early access OpenJDK 19 builds. Additionally, OpenJ9 and GraalVM CE were tossed in as alternative implementations.
For satisfying this reader request an Intel Core i5 12600K with Ubuntu 22.04 LTS was used for this round of Java JVM benchmarks. All of the OpenJDK builds tested were obtained from the official OpenJDK binaries and using the latest releases at the time of testing. Similarly, the reference binaries of OpenJ9 and GraalVM CE were also used for testing. Besides switching out the Java implementation for each series of tests, no other changes were made during testing. In keeping things to the default / out-of-the-box, no extra arguments were passed to the Java implementation during testing for looking at the reference performance for the JVM implementations.
This is quite a simple and straight-forward benchmark comparison, so let's get onto the numbers.
First up was the very basic Java SciMark 2.0 test where among the OpenJDK releases there wasn't much change with the JVM performance. OpenJ9 performed well here and was aligned with the fastest OpenJDK results -- that was the OpenJ9 builds against JDK 8/11 while the JDK 18 build was much slower along with the GraalVM CE builds.
OpenJ9 performed much slower than OpenJDK and GraalVM within the Sparse Matrix Multiply test.
But the OpenJ9 JDK 8/11 builds performed much faster than the rest for Dense LU Matrix Factorization.