Ruby VS Chapel benchmarks

Current benchmark data was generated on Wed May 25 2022, full log can be found HERE

CONTRIBUTIONS are WELCOME!

[x86_64][2 cores] Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz (Model 85)

* -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 2509ms 8.4ms 66.1MB 2477ms 20ms chpl 1.26.0
chapel 3.chpl 2721ms 5.2ms 64.1MB 2687ms 23ms chpl 1.26.0
ruby 1.rb timeout 0.0ms 0.0MB 0ms 0ms ruby 3.1.2
ruby 1.rb timeout 0.0ms 0.0MB 0ms 0ms ruby/yjit 3.1.2
ruby 1.rb timeout 0.0ms 0.0MB 0ms 0ms truffleruby 22.1.0

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 4.chpl 234ms 1.7ms 34.1MB 213ms 10ms chpl 1.26.0
chapel 3.chpl 245ms 1.0ms 36.1MB 230ms 3ms chpl 1.26.0
ruby 1.rb 959ms 4.8ms 35.5MB 927ms 20ms ruby 3.1.2
ruby 1.rb 1007ms 63ms 292.1MB 833ms 157ms ruby/yjit 3.1.2
ruby 1-m.rb 1154ms 16ms 374.0MB 1910ms 153ms truffleruby 22.1.0

coro-prime-sieve

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ruby 1.rb 3734ms 38ms 336.8MB 3510ms 207ms ruby/yjit 3.1.2
chapel 1-m.chpl 4218ms 372ms 111.4MB 7983ms 47ms chpl 1.26.0
ruby 1.rb timeout 0.0ms 0.0MB 0ms 0ms ruby 3.1.2
ruby 1.rb timeout 0.0ms 0.0MB 0ms 0ms truffleruby 22.1.0

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ruby 1.rb 274ms 3.5ms 42.3MB 230ms 23ms ruby 3.1.2
chapel 1-m.chpl 289ms 3.3ms 44.2MB 510ms 23ms chpl 1.26.0
ruby 1.rb 439ms 2.5ms 298.8MB 270ms 150ms ruby/yjit 3.1.2
ruby 1.rb timeout 0.0ms 0.0MB 0ms 0ms truffleruby 22.1.0

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 5-m.chpl 135ms 2.9ms 32.0MB 220ms 7ms chpl 1.26.0
ruby 6.rb 2592ms 2.6ms 296.0MB 2430ms 143ms ruby/yjit 3.1.2
ruby 6.rb 4521ms 77ms 39.5MB 4483ms 23ms ruby 3.1.2
ruby 6.rb timeout 0.0ms 0.0MB 0ms 0ms truffleruby 22.1.0

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 5.chpl 30ms 1.5ms 32.0MB 27ms 3ms chpl 1.26.0
ruby 6.rb 520ms 7.9ms 31.2MB 493ms 13ms ruby 3.1.2
ruby 6.rb 534ms 1.0ms 287.7MB 367ms 147ms ruby/yjit 3.1.2
ruby 6-m.rb 1815ms 39ms 324.3MB 3240ms 147ms truffleruby 22.1.0

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1.chpl 18ms 1.8ms 32.4MB 2ms 8ms chpl 1.26.0
ruby 1.rb 47ms 1.2ms 138.4MB 20ms 30ms truffleruby 22.1.0
ruby 1.rb 68ms 3.3ms 29.9MB 46ms 8ms ruby 3.1.2
ruby 1.rb 255ms 11ms 286.7MB 106ms 136ms ruby/yjit 3.1.2

json-serde

Input: sample 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ruby 1.rb 395ms 1.2ms 48.4MB 353ms 27ms ruby 3.1.2
ruby 1.rb 572ms 1.1ms 305.6MB 413ms 140ms ruby/yjit 3.1.2
ruby 1.rb timeout 0.0ms 0.0MB 0ms 0ms truffleruby 22.1.0

Input: canada 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ruby 1.rb 3803ms 283ms 419.3MB 3567ms 220ms ruby/yjit 3.1.2
ruby 1.rb 3923ms 1.6ms 162.5MB 3800ms 103ms ruby 3.1.2
ruby 1.rb timeout 0.0ms 0.0MB 0ms 0ms truffleruby 22.1.0

lru

Input: 1000 1000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ruby 1.rb 601ms 3.2ms 30.2MB 573ms 13ms ruby 3.1.2
ruby 1.rb 668ms 1.4ms 286.7MB 507ms 147ms ruby/yjit 3.1.2
ruby 1-m.rb 1118ms 34ms 324.3MB 1683ms 130ms truffleruby 22.1.0

Input: 1000 3000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ruby 1.rb 1454ms 1.2ms 286.8MB 1283ms 153ms ruby/yjit 3.1.2
ruby 1.rb 1827ms 148ms 30.2MB 1800ms 10ms ruby 3.1.2
ruby 1-m.rb 1929ms 66ms 366.3MB 2780ms 180ms truffleruby 22.1.0

Input: 100 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ruby 1.rb 334ms 0.5ms 30.0MB 313ms 3ms ruby 3.1.2
ruby 1.rb 419ms 1.1ms 286.8MB 280ms 123ms ruby/yjit 3.1.2
ruby 1-m.rb 801ms 86ms 311.0MB 1277ms 97ms truffleruby 22.1.0

merkletrees

Input: 17

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ruby 1.rb timeout 0.0ms 0.0MB 0ms 0ms ruby 3.1.2
ruby 1.rb timeout 0.0ms 0.0MB 0ms 0ms ruby/yjit 3.1.2
ruby 1.rb timeout 0.0ms 0.0MB 0ms 0ms truffleruby 22.1.0

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ruby 1-m.rb 3899ms 12ms 522.4MB 7130ms 253ms truffleruby 22.1.0
ruby 1.rb 3919ms 269ms 300.9MB 3750ms 147ms ruby/yjit 3.1.2
ruby 1.rb 4824ms 19ms 44.4MB 4790ms 17ms ruby 3.1.2

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 2.chpl 406ms 1.2ms 32.4MB 383ms 7ms chpl 1.26.0
ruby 2.rb 1453ms 19ms 300.6MB 1823ms 127ms truffleruby 22.1.0
ruby 2.rb timeout 0.0ms 0.0MB 0ms 0ms ruby 3.1.2
ruby 2.rb timeout 0.0ms 0.0MB 0ms 0ms ruby/yjit 3.1.2

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 2.chpl 61ms 1.2ms 32.4MB 40ms 7ms chpl 1.26.0
ruby 2-m.rb 547ms 17ms 293.9MB 873ms 107ms truffleruby 22.1.0
ruby 2.rb 2300ms 157ms 286.8MB 2147ms 137ms ruby/yjit 3.1.2
ruby 2.rb 2985ms 224ms 30.0MB 2960ms 10ms ruby 3.1.2

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ruby 1.rb timeout 0.0ms 0.0MB 0ms 0ms ruby 3.1.2
ruby 1.rb timeout 0.0ms 0.0MB 0ms 0ms ruby/yjit 3.1.2
ruby 1.rb timeout 0.0ms 0.0MB 0ms 0ms truffleruby 22.1.0

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ruby 1.rb 4255ms 11ms 450.1MB 4693ms 197ms truffleruby 22.1.0
ruby 1.rb timeout 0.0ms 0.0MB 0ms 0ms ruby 3.1.2
ruby 1.rb timeout 0.0ms 0.0MB 0ms 0ms ruby/yjit 3.1.2

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 2.chpl 487ms 1.8ms 34.1MB 473ms 3ms chpl 1.26.0
ruby 1.rb timeout 0.0ms 0.0MB 0ms 0ms ruby 3.1.2
ruby 1.rb timeout 0.0ms 0.0MB 0ms 0ms ruby/yjit 3.1.2
ruby 1.rb timeout 0.0ms 0.0MB 0ms 0ms truffleruby 22.1.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 2.chpl 129ms 0.5ms 34.1MB 110ms 3ms chpl 1.26.0
ruby 1-m.rb 2398ms 14ms 380.8MB 4403ms 170ms truffleruby 22.1.0
ruby 1.rb 2920ms 118ms 162.8MB 2817ms 83ms ruby 3.1.2
ruby 1.rb 3138ms 10ms 420.7MB 2910ms 213ms ruby/yjit 3.1.2

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1-m.chpl 1899ms 4.4ms 32.4MB 3597ms 7ms chpl 1.26.0
chapel 1.chpl 3781ms 2.3ms 32.4MB 3760ms 7ms chpl 1.26.0
ruby 4.rb timeout 0.0ms 0.0MB 0ms 0ms ruby 3.1.2
ruby 4.rb timeout 0.0ms 0.0MB 0ms 0ms ruby/yjit 3.1.2
ruby 4.rb timeout 0.0ms 0.0MB 0ms 0ms truffleruby 22.1.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1-m.chpl 495ms 1.7ms 32.4MB 930ms 7ms chpl 1.26.0
chapel 1.chpl 964ms 0.8ms 32.4MB 950ms 0ms chpl 1.26.0
ruby 4.rb timeout 0.0ms 0.0MB 0ms 0ms ruby 3.1.2
ruby 4.rb timeout 0.0ms 0.0MB 0ms 0ms ruby/yjit 3.1.2
ruby 4.rb timeout 0.0ms 0.0MB 0ms 0ms truffleruby 22.1.0

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
chapel 1-m.chpl 141ms 3.2ms 32.4MB 233ms 7ms chpl 1.26.0
chapel 1.chpl 257ms 0.8ms 32.4MB 240ms 3ms chpl 1.26.0
ruby 4.rb 2702ms 3.9ms 365.9MB 3373ms 150ms truffleruby 22.1.0
ruby 4.rb timeout 0.0ms 0.0MB 0ms 0ms ruby 3.1.2
ruby 4.rb timeout 0.0ms 0.0MB 0ms 0ms ruby/yjit 3.1.2