The Computer Language
24.04 Benchmarks Game

Ruby yjit versus Matz's Ruby 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
Ruby yjit 1,380.34 20,992 391 1,380.29
Matz's Ruby 11,806.75 11,172 384 11,806.00
Matz's Ruby #2 4,248.27 10,952 1455 16,306.91
n-body
source secs mem gz cpu secs
Ruby yjit #3 188.71 21,248 1169 188.71
Ruby yjit #2 215.31 21,248 1143 215.31
Matz's Ruby #2 2,641.26 11,096 1137 2,641.13
Matz's Ruby #3 2,685.89 11,100 1163 2,685.75
spectral-norm
source secs mem gz cpu secs
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
Matz's Ruby 1,618.02 11,056 292 1,617.89
Matz's Ruby #4 1,750.56 11,056 326 1,750.22
Matz's Ruby #5 640.85 11,056 758 2,422.71
mandelbrot
source secs mem gz cpu secs
Ruby yjit #5 151.07 86,272 978 603.13
Ruby yjit #4 661.22 136,132 862 661.94
Ruby yjit #2 259.17 94,336 887 1,034.44
Ruby yjit #3 1,538.89 21,120 313 1,538.80
Matz's Ruby #3 8,406.04 11,168 307 8,404.86
Matz's Ruby #4 9,067.35 146,560 857 9,065.25
Matz's Ruby #6 2,699.23 194,148 890 9,983.47
Matz's Ruby #2 2,700.66 71,144 880 10,748.11
Matz's Ruby #5   Failed  
Ruby yjit #6   Failed  
Matz's Ruby #7   Failed  
Ruby yjit #7   Failed  
pidigits
source secs mem gz cpu secs
Matz's Ruby #5 1.50 299,640 481 1.50
Ruby yjit #5 1.56 850,304 494 1.55
Matz's Ruby #2 2.75 118,660 654 2.75
Ruby yjit #2 3.22 2,271,624 666 3.22
Ruby yjit 16.56 104,192 524 16.55
Matz's Ruby   Bad Output  
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
Matz's Ruby #2 34.08 229,808 437 34.04
Matz's Ruby #3 16.05 229,908 724 37.74
Matz's Ruby #9 39.70 229,820 321 39.69
fasta
source secs mem gz cpu secs
Ruby yjit #6 23.07 120,064 1070 23.07
Ruby yjit #3 35.52 120,064 1004 35.52
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
Matz's Ruby #6 289.49 101,988 1071 289.23
Matz's Ruby #3 300.47 101,972 1020 300.21
Matz's Ruby #4 339.56 275,604 860 339.24
Matz's Ruby #5 383.82 11,144 995 383.63
Matz's Ruby #2 447.97 248,352 743 447.94
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
Matz's Ruby #2 517.05 168,140 420 516.67
Matz's Ruby 191.91 147,340 576 642.05
Matz's Ruby #3 757.75 168,844 540 757.17
Matz's Ruby #7   Failed  
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
Matz's Ruby #2 23.82 755,060 264 23.82
Ruby yjit #2 24.46 1,001,852 272 24.46
Ruby yjit 18.75 5,147,124 521 36.24
Matz's Ruby   Failed  
Matz's Ruby #5   Failed  
Matz's Ruby #3   Failed  
Matz's Ruby #4   Failed  
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
Matz's Ruby #3 587.85 840,236 400 587.53
Matz's Ruby #4 711.74 1,558,908 364 711.44
Matz's Ruby 788.34 1,561,420 376 788.27
Matz's Ruby #2 800.92 1,559,712 378 800.84
Matz's Ruby #5 308.13 1,493,752 1008 965.05
Ruby yjit

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

Matz's Ruby

ruby 1.8.7
(2014-01-28
patchlevel 376)
[x86_64-linux]