The Computer Language
23.03 Benchmarks Game

Java versus Java GraalVM fastest performance

Always look at the source code.

If the fastest programs are hand-written vector instructions, does the host language matter? You might be more interested in the less optimised programs — more seconds, less gz source code.

fannkuch-redux
source secs mem gz cpu secs
Java GraalVM #3 33.81 86,924 1257 33.96
Java GraalVM 9.23 86,828 1282 36.40
Java GraalVM #2 38.31 87,828 514 38.43
Java #3 40.36 39,932 1257 40.43
Java 10.71 40,324 1282 42.25
Java #2 46.85 38,492 514 46.91
n-body
source secs mem gz cpu secs
Java GraalVM #4 6.18 85,548 1489 6.27
Java GraalVM #5 6.44 86,316 1429 6.53
Java #5 6.77 40,632 1429 6.82
Java #4 6.86 40,516 1489 6.89
Java GraalVM #3 6.86 86,496 1430 6.95
Java GraalVM #2 6.87 78,172 1424 6.96
Java #2 7.32 40,508 1424 7.37
Java GraalVM 7.27 86,564 1430 7.39
Java #3 7.38 40,492 1430 7.43
Java 7.76 40,724 1430 7.80
spectral-norm
source secs mem gz cpu secs
Java #3 1.54 42,324 756 5.93
Java GraalVM #3 1.62 88,944 756 6.17
Java GraalVM #2 1.78 91,088 950 6.78
Java 7.02 41,448 514 7.09
Java #2 2.39 41,092 950 9.25
Java GraalVM 11.14 90,036 514 11.28
mandelbrot
source secs mem gz cpu secs
Java GraalVM #4 4.33 143,704 660 15.87
Java GraalVM #2 4.09 133,016 796 16.10
Java #4 4.39 101,236 660 16.12
Java GraalVM #6 4.11 128,192 802 16.15
Java #2 4.11 83,924 796 16.21
Java #6 4.27 84,532 802 16.86
Java 25.66 40,860 665 25.73
Java GraalVM 26.52 83,372 665 26.68
Java GraalVM #3 7.26 131,396 903 28.75
Java #3 7.37 88,056 903 29.24
pidigits
source secs mem gz cpu secs
Java #3 0.92 38,380 764 0.95
Java GraalVM #3 0.95 76,008 764 1.03
Java #2 1.34 41,352 938 1.42
Java GraalVM #2 1.37 87,768 938 1.51
Java GraalVM 6.85 448,912 800 7.82
Java 7.44 430,616 800 8.45
regex-redux
source secs mem gz cpu secs
Java GraalVM 7.72 941,956 868 15.05
Java GraalVM #3 4.89 833,652 929 15.63
Java 8.58 767,552 868 16.68
Java #6 5.40 637,728 740 17.08
Java #3 5.45 736,544 929 17.42
Java GraalVM #6 6.19 880,996 740 19.38
fasta
source secs mem gz cpu secs
Java #4 3.17 40,400 1524 3.27
Java GraalVM #6 1.26 95,520 2543 3.55
Java #6 1.16 46,068 2543 3.65
Java #5 1.23 46,180 2473 3.79
Java GraalVM #5 1.24 98,160 2473 3.80
Java #2 4.32 44,708 1257 4.45
Java GraalVM #4 3.55 375,868 1524 5.12
Java GraalVM #2 5.51 333,924 1257 7.05
k-nucleotide
source secs mem gz cpu secs
Java GraalVM 4.17 424,112 1812 13.25
Java 5.03 361,196 1812 16.40
Java #6 7.17 357,700 1607 25.04
Java #3 7.12 357,568 1635 25.06
Java GraalVM #6 7.70 420,628 1607 27.07
Java GraalVM #3 7.75 419,952 1635 27.32
Java #4 35.38 201,052 1882 35.83
Java GraalVM #4 36.39 248,772 1882 37.04
Java #5 18.82 208,376 2219 40.84
Java GraalVM #5 18.18 261,580 2219 42.52
reverse-complement
source secs mem gz cpu secs
Java #6 3.02 2,027,152 752 3.69
Java #5 4.46 1,094,060 1108 4.58
Java GraalVM #5 4.61 1,142,600 1108 4.91
Java GraalVM #4 5.33 1,898,848 651 5.59
Java #4 5.51 1,886,052 651 5.62
Java #7 24.15 1,032,956 1647 6.20
Java GraalVM #6 4.37 2,043,472 752 7.10
Java GraalVM #7 28.03 1,512,852 1647 22.89
Java GraalVM #8   Bad Output  
Java #3   Bad Output  
Java #8   Bad Output  
Java GraalVM #3   Bad Output  
binary-trees
source secs mem gz cpu secs
Java #4 4.47 2,116,292 840 5.15
Java #6 4.88 2,058,280 529 5.59
Java #3 4.91 2,101,240 540 5.61
Java #2 5.05 2,095,888 552 5.73
Java GraalVM #2 5.04 1,962,208 552 6.40
Java GraalVM #4 5.48 2,367,360 840 6.67
Java GraalVM #3 6.25 2,023,588 540 7.41
Java GraalVM #6 6.30 1,800,616 529 7.68
Java #7 2.52 1,726,148 835 7.89
Java GraalVM #7 2.68 1,785,956 835 8.50
Java

openjdk 20 2023-03-21
OpenJDK Runtime Environment
(build 20+36-2344)
OpenJDK 64-Bit Server VM
(build build 20+36-2344
mixed mode, sharing)

Java GraalVM

openjdk 19.0.2 2023-01-17
OpenJDK Runtime Environment
GraalVM CE 22.3.1
(build 19.0.2+7-jvmci-22.3-b12)
OpenJDK 64-Bit Server VM
GraalVM CE 22.3.1
(build 19.0.2+7-jvmci-22.3-b12
mixed mode, sharing)