All Ruby benchmarks

Current benchmark data was generated on Thu Feb 01 2024, full log can be found HERE

CONTRIBUTIONS are WELCOME!

[x86_64][4 cores] AMD EPYC 7763 64-Core Processor (Model 1)

* -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 4037ms 417ms 123.9MB 3920ms 100ms ruby/yjit 3.3.0
1.rb timeout 0.0ms 85.3MB 4930ms 53ms ruby 3.3.0
1.rb timeout 0.0ms 679.9MB 9080ms 607ms truffleruby 23.1.2

Input: 15

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
1.rb 408ms 6.3ms 36.4MB 367ms 27ms ruby/yjit 3.3.0
1.rb 856ms 5.9ms 36.4MB 813ms 20ms ruby 3.3.0
1-m.rb 910ms 25ms 437.3MB 2027ms 183ms truffleruby 23.1.2

coro-prime-sieve

Input: 4000

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
1.rb 1431ms 5.5ms 78.5MB 1337ms 77ms ruby/yjit 3.3.0
1.rb 1779ms 29ms 78.3MB 1693ms 70ms ruby 3.3.0
1.rb timeout 0.0ms 717.5MB 4877ms 1427ms truffleruby 23.1.2

Input: 1000

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
1.rb 169ms 1.3ms 40.5MB 127ms 27ms ruby/yjit 3.3.0
1.rb 190ms 2.2ms 40.3MB 133ms 40ms ruby 3.3.0
1.rb timeout 0.0ms 730.8MB 4667ms 1557ms truffleruby 23.1.2

fasta

Input: 2500000

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
6.rb 1457ms 11ms 39.1MB 1407ms 33ms ruby/yjit 3.3.0
6-m.rb 2178ms 87ms 420.2MB 5517ms 327ms truffleruby 23.1.2
6.rb 3794ms 10ms 37.6MB 3760ms 20ms ruby 3.3.0

Input: 250000

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
6.rb 223ms 11ms 30.4MB 190ms 17ms ruby/yjit 3.3.0
6.rb 445ms 0.8ms 30.0MB 407ms 23ms ruby 3.3.0
6-m.rb 835ms 23ms 372.2MB 2033ms 187ms truffleruby 23.1.2

helloworld

Input: QwQ

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
1.rb 41ms 0.2ms 161.9MB 8ms 32ms truffleruby 23.1.2
1.rb 70ms 2.0ms 28.3MB 46ms 12ms ruby 3.3.0
1.rb 72ms 1.8ms 28.4MB 46ms 16ms ruby/yjit 3.3.0

json-serde

Input: sample 5000

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
1.rb 295ms 2.6ms 49.8MB 250ms 30ms ruby 3.3.0
1.rb 305ms 2.8ms 49.0MB 257ms 33ms ruby/yjit 3.3.0
1-m.rb 4664ms 272ms 508.1MB 12213ms 377ms truffleruby 23.1.2

Input: canada 15

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
1.rb 2261ms 6.5ms 170.4MB 2133ms 110ms ruby/yjit 3.3.0
1.rb 2266ms 17ms 168.1MB 2147ms 103ms ruby 3.3.0
1.rb timeout 0.0ms 566.0MB 13103ms 413ms truffleruby 23.1.2

lru

Input: 1000 1000000

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
1.rb 335ms 1.4ms 28.6MB 307ms 13ms ruby/yjit 3.3.0
1.rb 536ms 12ms 28.4MB 503ms 20ms ruby 3.3.0
1-m.rb 658ms 38ms 365.9MB 1090ms 147ms truffleruby 23.1.2

Input: 1000 3000000

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
1.rb 860ms 11ms 28.6MB 823ms 20ms ruby/yjit 3.3.0
1.rb 1229ms 22ms 408.0MB 1667ms 170ms truffleruby 23.1.2
1.rb 1440ms 9.3ms 28.3MB 1403ms 23ms ruby 3.3.0

Input: 100 500000

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
1.rb 202ms 0.6ms 28.6MB 177ms 13ms ruby/yjit 3.3.0
1.rb 299ms 2.9ms 28.3MB 270ms 17ms ruby 3.3.0
1-m.rb 526ms 34ms 355.4MB 967ms 143ms truffleruby 23.1.2

merkletrees

Input: 17

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
1.rb timeout 0.0ms 87.8MB 4917ms 73ms ruby 3.3.0
1.rb timeout 0.0ms 88.2MB 4917ms 67ms ruby/yjit 3.3.0
1.rb timeout 0.0ms 575.9MB 12800ms 437ms truffleruby 23.1.2

Input: 15

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
1-m.rb 2642ms 152ms 618.4MB 6900ms 303ms truffleruby 23.1.2
1.rb 3031ms 1.4ms 46.8MB 2987ms 30ms ruby/yjit 3.3.0
1.rb 4013ms 75ms 46.5MB 3970ms 23ms ruby 3.3.0

nbody

Input: 5000000

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
2.rb 953ms 118ms 319.9MB 1190ms 110ms truffleruby 23.1.2
2.rb timeout 0.0ms 28.1MB 4967ms 17ms ruby 3.3.0
2.rb timeout 0.0ms 28.5MB 4963ms 20ms ruby/yjit 3.3.0

Input: 500000

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
2-m.rb 319ms 5.4ms 312.4MB 540ms 113ms truffleruby 23.1.2
2.rb 1455ms 8.4ms 28.4MB 1423ms 17ms ruby/yjit 3.3.0
2.rb 2876ms 37ms 28.1MB 2840ms 20ms ruby 3.3.0

nsieve

Input: 12

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
1.rb timeout 0.0ms 340.6MB 4840ms 150ms ruby 3.3.0
1.rb timeout 0.0ms 342.0MB 4843ms 140ms ruby/yjit 3.3.0
1.rb timeout 0.0ms 743.0MB 5043ms 167ms truffleruby 23.1.2

Input: 10

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
1-m.rb 1665ms 20ms 472.9MB 2357ms 177ms truffleruby 23.1.2
1.rb 3530ms 47ms 146.6MB 3423ms 87ms ruby/yjit 3.3.0
1.rb 4855ms 12ms 146.4MB 4753ms 83ms ruby 3.3.0

pidigits

Input: 8000

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
1.rb timeout 0.0ms 108.6MB 4923ms 63ms ruby 3.3.0
1.rb timeout 0.0ms 108.8MB 4913ms 70ms ruby/yjit 3.3.0
1.rb timeout 0.0ms 456.4MB 13293ms 427ms truffleruby 23.1.2

Input: 4000

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
1.rb 1680ms 2.7ms 109.0MB 1597ms 67ms ruby/yjit 3.3.0
1.rb 1696ms 16ms 108.5MB 1610ms 70ms ruby 3.3.0
1-m.rb 1925ms 70ms 409.5MB 5020ms 253ms truffleruby 23.1.2

spectral-norm

Input: 8000

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
4.rb timeout 0.0ms 28.1MB 4973ms 10ms ruby 3.3.0
4.rb timeout 0.0ms 28.5MB 4963ms 17ms ruby/yjit 3.3.0
4.rb timeout 0.0ms 527.7MB 5150ms 253ms truffleruby 23.1.2

Input: 4000

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
4.rb 4605ms 65ms 509.3MB 4857ms 220ms truffleruby 23.1.2
4.rb timeout 0.0ms 28.1MB 4967ms 20ms ruby 3.3.0
4.rb timeout 0.0ms 28.5MB 4963ms 20ms ruby/yjit 3.3.0

Input: 2000

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
4.rb 1257ms 60ms 358.6MB 1563ms 133ms truffleruby 23.1.2
4.rb timeout 0.0ms 28.3MB 4973ms 10ms ruby 3.3.0
4.rb timeout 0.0ms 28.4MB 4970ms 13ms ruby/yjit 3.3.0