All Ruby benchmarks

Current benchmark data was generated on Wed Mar 22 2023, full log can be found HERE

CONTRIBUTIONS are WELCOME!

[x86_64][2 cores] Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz (Model 106)

* -m in a file name stands for multi-threading or multi-processing

* -i in a file name stands for direct intrinsics usage. (Usage of simd intrinsics via libraries is not counted)

* -ffi in a file name stands for non-stdlib FFI usage

* (You may find time < time(user) + time(sys) for some non-parallelized programs, the overhead is from GC or JIT compiler, which are allowed to take advantage of multi-cores as that's more close to real-world scenarios.)

binarytrees

Input: 18

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
1.rb timeout 0.0ms 72.7MB 4940ms 43ms ruby 3.2.1
1.rb timeout 0.0ms 115.6MB 4920ms 60ms ruby/yjit 3.2.1
1.rb timeout 0.0ms 714.3MB 7813ms 353ms truffleruby 22.3.1

Input: 15

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
1.rb 551ms 1.5ms 40.6MB 523ms 10ms ruby/yjit 3.2.1
1.rb 991ms 4.0ms 40.2MB 963ms 10ms ruby 3.2.1
1-m.rb 1011ms 11ms 430.3MB 1650ms 120ms truffleruby 22.3.1

coro-prime-sieve

Input: 4000

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
1.rb 3273ms 12ms 82.7MB 3213ms 40ms ruby/yjit 3.2.1
1.rb 3704ms 36ms 82.1MB 3630ms 53ms ruby 3.2.1
1.rb timeout 0.0ms 1118.6MB 4167ms 1353ms truffleruby 22.3.1

Input: 1000

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
1.rb 228ms 3.7ms 45.0MB 193ms 17ms ruby/yjit 3.2.1
1.rb 241ms 1.1ms 44.5MB 200ms 27ms ruby 3.2.1
1.rb timeout 0.0ms 1115.6MB 4157ms 1287ms truffleruby 22.3.1

fasta

Input: 2500000

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
6.rb 2407ms 2.4ms 43.5MB 2377ms 13ms ruby/yjit 3.2.1
6-m.rb 2592ms 11ms 372.7MB 4680ms 257ms truffleruby 22.3.1
6.rb 4226ms 15ms 43.1MB 4197ms 13ms ruby 3.2.1

Input: 250000

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
6.rb 316ms 0.2ms 35.0MB 283ms 17ms ruby/yjit 3.2.1
6.rb 497ms 11ms 34.4MB 470ms 10ms ruby 3.2.1
6-m.rb 833ms 25ms 321.3MB 1410ms 120ms truffleruby 22.3.1

helloworld

Input: QwQ

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
1.rb 44ms 1.8ms 156.9MB 16ms 30ms truffleruby 22.3.1
1.rb 74ms 1.5ms 32.0MB 52ms 10ms ruby 3.2.1
1.rb 75ms 0.7ms 32.1MB 50ms 10ms ruby/yjit 3.2.1

json-serde

Input: sample 5000

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
1.rb 443ms 1.9ms 50.1MB 413ms 17ms ruby 3.2.1
1.rb 446ms 2.3ms 51.3MB 420ms 10ms ruby/yjit 3.2.1
1.rb timeout 0.0ms 454.7MB 9170ms 213ms truffleruby 22.3.1

Input: canada 15

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
1.rb 3997ms 1.7ms 174.9MB 3910ms 70ms ruby/yjit 3.2.1
1.rb 4004ms 15ms 173.9MB 3903ms 83ms ruby 3.2.1
1.rb timeout 0.0ms 414.8MB 9253ms 187ms truffleruby 22.3.1

lru

Input: 1000 1000000

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
1.rb 440ms 1.3ms 32.9MB 417ms 7ms ruby/yjit 3.2.1
1.rb 600ms 6.0ms 32.4MB 573ms 10ms ruby 3.2.1
1-m.rb 787ms 25ms 323.1MB 1143ms 103ms truffleruby 22.3.1

Input: 1000 3000000

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
1.rb 1169ms 4.7ms 33.0MB 1143ms 7ms ruby/yjit 3.2.1
1.rb 1441ms 41ms 371.3MB 1893ms 140ms truffleruby 22.3.1
1.rb 1641ms 7.3ms 32.4MB 1613ms 17ms ruby 3.2.1

Input: 100 500000

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
1.rb 256ms 0.7ms 32.8MB 237ms 3ms ruby/yjit 3.2.1
1.rb 333ms 3.6ms 32.3MB 313ms 7ms ruby 3.2.1
1-m.rb 569ms 14ms 309.1MB 853ms 77ms truffleruby 22.3.1

merkletrees

Input: 17

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
1.rb timeout 0.0ms 96.5MB 4927ms 53ms ruby 3.2.1
1.rb timeout 0.0ms 97.0MB 4940ms 40ms ruby/yjit 3.2.1
1.rb timeout 0.0ms 567.8MB 9107ms 270ms truffleruby 22.3.1

Input: 15

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
1-m.rb 3328ms 33ms 590.4MB 6060ms 243ms truffleruby 22.3.1
1.rb 4322ms 23ms 53.7MB 4287ms 20ms ruby/yjit 3.2.1
1.rb timeout 0.0ms 52.7MB 4960ms 20ms ruby 3.2.1

nbody

Input: 5000000

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
2.rb 1041ms 6.3ms 305.3MB 1223ms 103ms truffleruby 22.3.1
2.rb timeout 0.0ms 32.2MB 4970ms 13ms ruby 3.2.1
2.rb timeout 0.0ms 33.0MB 4977ms 3ms ruby/yjit 3.2.1

Input: 500000

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
2-m.rb 403ms 15ms 307.3MB 623ms 83ms truffleruby 22.3.1
2.rb 2132ms 5.5ms 32.9MB 2103ms 13ms ruby/yjit 3.2.1
2.rb 3199ms 11ms 32.2MB 3180ms 3ms ruby 3.2.1

nsieve

Input: 12

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
1.rb timeout 0.0ms 344.5MB 4847ms 133ms ruby 3.2.1
1.rb timeout 0.0ms 345.2MB 4830ms 150ms ruby/yjit 3.2.1
1.rb timeout 0.0ms 682.5MB 5027ms 163ms truffleruby 22.3.1

Input: 10

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
1.rb 3067ms 47ms 426.8MB 3563ms 113ms truffleruby 22.3.1
1.rb timeout 0.0ms 151.0MB 4910ms 70ms ruby 3.2.1
1.rb timeout 0.0ms 151.5MB 4910ms 67ms ruby/yjit 3.2.1

pidigits

Input: 8000

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
1.rb timeout 0.0ms 159.2MB 4923ms 60ms ruby 3.2.1
1.rb timeout 0.0ms 159.2MB 4933ms 47ms ruby/yjit 3.2.1
1.rb timeout 0.0ms 430.7MB 9390ms 237ms truffleruby 22.3.1

Input: 4000

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
1-m.rb 2017ms 42ms 427.3MB 3650ms 183ms truffleruby 22.3.1
1.rb 2432ms 3.0ms 161.2MB 2357ms 60ms ruby/yjit 3.2.1
1.rb 2447ms 4.7ms 159.1MB 2357ms 67ms ruby 3.2.1

spectral-norm

Input: 8000

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
4.rb timeout 0.0ms 32.3MB 4970ms 10ms ruby 3.2.1
4.rb timeout 0.0ms 32.6MB 4970ms 13ms ruby/yjit 3.2.1
4.rb timeout 0.0ms 551.6MB 5220ms 233ms truffleruby 22.3.1

Input: 4000

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
4.rb timeout 0.0ms 32.3MB 4973ms 7ms ruby 3.2.1
4.rb timeout 0.0ms 32.7MB 4970ms 7ms ruby/yjit 3.2.1
4.rb timeout 0.0ms 589.4MB 5457ms 193ms truffleruby 22.3.1

Input: 2000

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
4.rb 2499ms 6.6ms 470.4MB 2993ms 157ms truffleruby 22.3.1
4.rb timeout 0.0ms 32.3MB 4967ms 10ms ruby 3.2.1
4.rb timeout 0.0ms 33.0MB 4963ms 17ms ruby/yjit 3.2.1