Ruby VS Chapel benchmarks

Current benchmark data was generated on Sun Dec 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

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 4.chpl 1950ms 11ms 66.4MB 1937ms 0ms chpl 1.31.0
chapel 3.chpl 2095ms 33ms 66.4MB 2087ms 3ms chpl 1.31.0
ruby 1-m.rb 3037ms 2639ms 793.8MB 6587ms 477ms truffleruby 24.1.1
ruby 1.rb 3763ms 40ms 113.5MB 3657ms 90ms ruby/yjit 3.3.6
ruby 1.rb timeout 0.0ms 78.9MB 4930ms 50ms ruby 3.3.6

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 4.chpl 193ms 3.0ms 36.4MB 183ms 7ms chpl 1.31.0
chapel 3.chpl 205ms 18ms 34.3MB 190ms 3ms chpl 1.31.0
ruby 1.rb 411ms 3.8ms 36.4MB 370ms 23ms ruby/yjit 3.3.6
ruby 1-m.rb 587ms 83ms 434.3MB 1170ms 163ms truffleruby 24.1.1
ruby 1.rb 847ms 11ms 36.3MB 807ms 27ms ruby 3.3.6

coro-prime-sieve

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ruby 1.rb 1415ms 30ms 78.4MB 1310ms 93ms ruby/yjit 3.3.6
ruby 1.rb 1783ms 20ms 78.3MB 1687ms 80ms ruby 3.3.6
chapel 1-m.chpl 2252ms 19ms 555.7MB 4367ms 70ms chpl 1.31.0
ruby 1.rb timeout 0.0ms 768.0MB 4493ms 1697ms truffleruby 24.1.1

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ruby 1.rb 172ms 3.9ms 40.4MB 120ms 37ms ruby/yjit 3.3.6
chapel 1-m.chpl 196ms 3.7ms 508.7MB 307ms 43ms chpl 1.31.0
ruby 1.rb 197ms 2.8ms 40.1MB 143ms 37ms ruby 3.3.6
ruby 1.rb timeout 0.0ms 670.5MB 4720ms 1480ms truffleruby 24.1.1

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 5-m.chpl 130ms 27ms 32.4MB 217ms 0ms chpl 1.31.0
ruby 6.rb 2124ms 38ms 37.6MB 2080ms 27ms ruby/yjit 3.3.6
ruby 6-m.rb 2363ms 337ms 455.2MB 5933ms 410ms truffleruby 24.1.1
ruby 6.rb 3752ms 11ms 39.3MB 3713ms 27ms ruby 3.3.6

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 5.chpl 29ms 0.1ms 32.4MB 27ms 0ms chpl 1.31.0
ruby 6.rb 286ms 3.9ms 30.8MB 253ms 17ms ruby/yjit 3.3.6
ruby 6.rb 441ms 2.4ms 31.0MB 410ms 17ms ruby 3.3.6
ruby 6-m.rb 845ms 16ms 397.2MB 2117ms 157ms truffleruby 24.1.1

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1.chpl 16ms 0.7ms 32.8MB 7ms 3ms chpl 1.31.0
ruby 1.rb 41ms 0.8ms 168.5MB 20ms 26ms truffleruby 24.1.1
ruby 1.rb 69ms 1.8ms 28.0MB 48ms 12ms ruby 3.3.6
ruby 1.rb 70ms 0.6ms 28.1MB 42ms 14ms ruby/yjit 3.3.6

json-serde

Input: sample 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ruby 1.rb 294ms 4.5ms 48.1MB 247ms 30ms ruby 3.3.6
ruby 1.rb 298ms 2.3ms 48.3MB 253ms 33ms ruby/yjit 3.3.6
ruby 1.rb timeout 0.0ms 482.6MB 13033ms 340ms truffleruby 24.1.1

Input: canada 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ruby 1.rb 2318ms 20ms 169.6MB 2167ms 133ms ruby/yjit 3.3.6
ruby 1.rb 2361ms 106ms 168.7MB 2257ms 90ms ruby 3.3.6
ruby 1.rb timeout 0.0ms 570.4MB 13050ms 390ms truffleruby 24.1.1

lru

Input: 1000 1000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ruby 1.rb 327ms 4.3ms 28.4MB 293ms 20ms ruby/yjit 3.3.6
ruby 1.rb 541ms 51ms 28.3MB 510ms 17ms ruby 3.3.6
ruby 1-m.rb 688ms 35ms 390.9MB 1207ms 143ms truffleruby 24.1.1

Input: 1000 3000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ruby 1.rb 834ms 9.1ms 28.5MB 800ms 20ms ruby/yjit 3.3.6
ruby 1-m.rb 1270ms 23ms 436.7MB 1760ms 173ms truffleruby 24.1.1
ruby 1.rb 1406ms 22ms 28.3MB 1373ms 23ms ruby 3.3.6

Input: 100 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ruby 1.rb 197ms 0.7ms 28.4MB 167ms 13ms ruby/yjit 3.3.6
ruby 1.rb 290ms 3.2ms 28.3MB 260ms 13ms ruby 3.3.6
ruby 1-m.rb 555ms 11ms 368.8MB 1063ms 157ms truffleruby 24.1.1

merkletrees

Input: 17

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ruby 1-m.rb 4499ms 14ms 553.8MB 11583ms 350ms truffleruby 24.1.1
ruby 1.rb timeout 0.0ms 88.0MB 4917ms 70ms ruby 3.3.6
ruby 1.rb timeout 0.0ms 88.2MB 4910ms 70ms ruby/yjit 3.3.6

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ruby 1-m.rb 2205ms 87ms 510.9MB 5660ms 270ms truffleruby 24.1.1
ruby 1.rb 3025ms 9.5ms 47.1MB 2983ms 27ms ruby/yjit 3.3.6
ruby 1.rb 4035ms 24ms 46.9MB 3990ms 30ms ruby 3.3.6

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 2.chpl 334ms 4.0ms 32.8MB 317ms 7ms chpl 1.31.0
ruby 2.rb 861ms 20ms 329.1MB 1117ms 120ms truffleruby 24.1.1
ruby 2.rb timeout 0.0ms 28.0MB 4967ms 17ms ruby 3.3.6
ruby 2.rb timeout 0.0ms 28.3MB 4963ms 17ms ruby/yjit 3.3.6

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 2.chpl 52ms 0.2ms 32.8MB 40ms 0ms chpl 1.31.0
ruby 2-m.rb 323ms 3.4ms 328.9MB 570ms 107ms truffleruby 24.1.1
ruby 2.rb 1450ms 8.5ms 28.3MB 1413ms 23ms ruby/yjit 3.3.6
ruby 2.rb 2881ms 59ms 28.1MB 2850ms 20ms ruby 3.3.6

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ruby 1.rb timeout 0.0ms 340.6MB 4843ms 143ms ruby 3.3.6
ruby 1.rb timeout 0.0ms 341.9MB 4833ms 150ms ruby/yjit 3.3.6
ruby 1.rb timeout 0.0ms 764.3MB 5047ms 183ms truffleruby 24.1.1

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ruby 1-m.rb 1748ms 14ms 492.6MB 2550ms 163ms truffleruby 24.1.1
ruby 1.rb 3501ms 85ms 146.6MB 3403ms 80ms ruby/yjit 3.3.6
ruby 1.rb 4518ms 42ms 146.4MB 4413ms 83ms ruby 3.3.6

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 2.chpl 452ms 1.7ms 32.4MB 440ms 3ms chpl 1.31.0
ruby 1.rb timeout 0.0ms 107.6MB 4920ms 60ms ruby 3.3.6
ruby 1.rb timeout 0.0ms 108.8MB 4927ms 60ms ruby/yjit 3.3.6
ruby 1.rb timeout 0.0ms 469.5MB 13213ms 420ms truffleruby 24.1.1

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 2.chpl 121ms 1.7ms 34.4MB 117ms 3ms chpl 1.31.0
ruby 1.rb 1669ms 22ms 108.8MB 1587ms 70ms ruby/yjit 3.3.6
ruby 1.rb 1701ms 13ms 108.5MB 1623ms 60ms ruby 3.3.6
ruby 1-m.rb 1776ms 25ms 405.6MB 4673ms 213ms truffleruby 24.1.1

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1-m.chpl 1933ms 21ms 33.0MB 3823ms 0ms chpl 1.31.0
chapel 1.chpl 3709ms 10.0ms 32.8MB 3703ms 0ms chpl 1.31.0
ruby 4.rb timeout 0.0ms 28.1MB 4970ms 20ms ruby 3.3.6
ruby 4.rb timeout 0.0ms 28.3MB 4967ms 17ms ruby/yjit 3.3.6
ruby 4.rb timeout 0.0ms 455.7MB 5143ms 237ms truffleruby 24.1.1

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1-m.chpl 496ms 1.0ms 32.8MB 960ms 0ms chpl 1.31.0
chapel 1.chpl 946ms 5.3ms 32.8MB 937ms 7ms chpl 1.31.0
ruby 4.rb 4475ms 23ms 439.6MB 4760ms 200ms truffleruby 24.1.1
ruby 4.rb timeout 0.0ms 28.0MB 4960ms 20ms ruby 3.3.6
ruby 4.rb timeout 0.0ms 28.3MB 4963ms 20ms ruby/yjit 3.3.6

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1-m.chpl 140ms 0.3ms 32.9MB 243ms 3ms chpl 1.31.0
chapel 1.chpl 257ms 3.3ms 32.8MB 247ms 0ms chpl 1.31.0
ruby 4.rb 1235ms 59ms 393.4MB 1547ms 143ms truffleruby 24.1.1
ruby 4.rb timeout 0.0ms 28.1MB 4973ms 13ms ruby 3.3.6
ruby 4.rb timeout 0.0ms 28.3MB 4963ms 20ms ruby/yjit 3.3.6