The Computer Language
24.04 Benchmarks Game

Ruby yjit versus Java -Xint fastest performance

How the programs are written matters! 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
Ruby yjit #2 139.77 21,120 1462 536.11
Java -Xint #2 646.88 34,844 520 647.12
Java -Xint #3 724.53 35,492 1264 724.79
Java -Xint 194.95 35,732 1289 772.19
Ruby yjit 1,380.34 20,992 391 1,380.29
n-body
source secs mem gz cpu secs
Java -Xint #4 152.29 36,480 1495 152.34
Java -Xint #2 173.31 36,516 1430 173.35
Java -Xint #3 178.93 36,520 1436 178.99
Ruby yjit #3 188.71 21,248 1169 188.71
Java -Xint 214.08 36,516 1437 214.15
Ruby yjit #2 215.31 21,248 1143 215.31
Java -Xint #5 235.47 36,260 1435 235.55
spectral-norm
source secs mem gz cpu secs
Java -Xint 66.36 37,548 521 66.38
Java -Xint #2 16.93 37,300 956 67.39
Java -Xint #3 26.77 37,928 762 104.77
Ruby yjit 126.55 22,144 299 126.54
Ruby yjit #4 129.16 22,912 333 129.16
Ruby yjit #5 64.82 27,520 764 236.48
mandelbrot
source secs mem gz cpu secs
Java -Xint 359.43 36,376 671 359.55
Java -Xint #3 123.45 75,044 910 492.42
Ruby yjit #5 151.07 86,272 978 603.13
Java -Xint #4 172.46 98,700 667 641.60
Java -Xint #2 163.31 74,520 802 651.81
Ruby yjit #4 661.22 136,132 862 661.94
Java -Xint #6 170.34 74,148 808 680.04
Ruby yjit #2 259.17 94,336 887 1,034.44
Ruby yjit #3 1,538.89 21,120 313 1,538.80
Ruby yjit #6   Failed  
Ruby yjit #7   Failed  
pidigits
source secs mem gz cpu secs
Java -Xint #3 0.96 36,096 770 0.96
Java -Xint #2 1.46 38,020 944 1.46
Ruby yjit #5 1.56 850,304 494 1.55
Ruby yjit #2 3.22 2,271,624 666 3.22
Ruby yjit 16.56 104,192 524 16.55
Java -Xint 169.47 187,692 807 169.57
regex-redux
source secs mem gz cpu secs
Ruby yjit #2 23.19 216,576 444 23.19
Ruby yjit #3 11.84 216,576 730 24.21
Ruby yjit #9 30.10 216,576 327 30.09
Java -Xint 511.20 620,232 875 908.60
Java -Xint #6 346.10 1,220,172 746 915.26
Java -Xint #3 350.48 598,176 935 919.31
fasta
source secs mem gz cpu secs
Ruby yjit #6 23.07 120,064 1070 23.07
Java -Xint #5 8.78 40,484 2478 23.13
Java -Xint #4 24.99 35,732 1528 24.99
Java -Xint #6 9.00 40,480 2549 30.30
Ruby yjit #3 35.52 120,064 1004 35.52
Java -Xint #2 36.75 35,476 1259 36.76
Ruby yjit #5 91.70 22,784 1000 91.69
Ruby yjit #2 93.97 147,548 747 93.97
Ruby yjit #4 95.74 266,496 864 95.73
k-nucleotide
source secs mem gz cpu secs
Ruby yjit #7 256.92 393,216 792 255.31
Ruby yjit #2 255.78 181,700 426 255.60
Ruby yjit #3 272.84 203,672 546 273.06
Ruby yjit 84.88 172,436 583 300.65
Java -Xint 169.72 354,492 1821 424.92
Java -Xint #4 649.13 187,068 1887 649.37
Java -Xint #5 287.03 206,928 2225 675.05
Java -Xint #6 405.71 353,208 1614 1,348.49
Java -Xint #3 405.61 355,152 1642 1,348.58
reverse-complement
source secs mem gz cpu secs
Ruby yjit #5 10.77 1,624,300 301 10.76
Ruby yjit #4 6.88 2,510,956 608 12.51
Ruby yjit #3 9.57 4,232,604 490 17.72
Ruby yjit #2 24.46 1,001,852 272 24.46
Ruby yjit 18.75 5,147,124 521 36.24
Java -Xint #6 39.98 2,027,164 760 49.13
Java -Xint #4 82.48 1,882,316 656 82.50
Java -Xint #5 160.63 1,088,900 1115 158.65
Java -Xint #7 615.74 1,029,908 1654 1,436.84
Java -Xint #3   Bad Output  
Java -Xint #8   Bad Output  
binary-trees
source secs mem gz cpu secs
Ruby yjit #4 46.87 478,848 371 46.86
Ruby yjit 48.73 478,976 383 48.72
Ruby yjit #2 48.78 478,976 385 48.76
Ruby yjit #3 50.16 515,924 407 50.14
Ruby yjit #5 18.96 521,984 1016 53.93
Java -Xint #3 63.72 1,339,436 546 64.37
Java -Xint #6 67.18 1,289,400 535 67.82
Java -Xint #2 67.24 1,271,088 558 67.95
Java -Xint #4 83.92 1,110,452 846 84.71
Java -Xint #7 30.46 1,084,356 841 89.46
Ruby yjit

ruby 3.3.0
(2023-12-25
revision 5124f9ac75)
+YJIT [x86_64-linux]

Java -Xint

java 22 2024-03-19
Java HotSpot(TM) 64-Bit Server VM
(build 22+36-2370,
interpreted mode, sharing)