Ruby VS Odin benchmarks

Current benchmark data was generated on Wed Sep 28 2022, 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

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.2.0

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ruby 1-m.rb 876ms 6.5ms 391.6MB 1427ms 120ms truffleruby 22.2.0
ruby 1.rb 901ms 1.2ms 292.0MB 743ms 147ms ruby/yjit 3.1.2
ruby 1.rb 975ms 28ms 35.5MB 947ms 10ms ruby 3.1.2

coro-prime-sieve

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ruby 1.rb 3086ms 135ms 336.7MB 2877ms 193ms ruby/yjit 3.1.2
ruby 1.rb 3557ms 173ms 80.1MB 3480ms 57ms ruby 3.1.2
ruby 1.rb timeout 0.0ms 0.0MB 0ms 0ms truffleruby 22.2.0

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ruby 1.rb 244ms 1.2ms 42.3MB 210ms 20ms ruby 3.1.2
ruby 1.rb 382ms 8.4ms 298.8MB 223ms 140ms ruby/yjit 3.1.2
ruby 1.rb timeout 0.0ms 0.0MB 0ms 0ms truffleruby 22.2.0

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ruby 6.rb 2858ms 22ms 296.0MB 2707ms 133ms ruby/yjit 3.1.2
ruby 6.rb 4371ms 79ms 39.5MB 4343ms 17ms ruby 3.1.2
ruby 6.rb timeout 0.0ms 0.0MB 0ms 0ms truffleruby 22.2.0

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ruby 6.rb 500ms 2.0ms 287.7MB 340ms 143ms ruby/yjit 3.1.2
ruby 6.rb 508ms 11ms 31.1MB 480ms 10ms ruby 3.1.2
ruby 6-m.rb 1299ms 7.3ms 329.0MB 2303ms 103ms truffleruby 22.2.0

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
odin 1.odin 1.7ms 0.5ms 1.6MB 0ms 0ms odin 2022
ruby 1.rb 40ms 2.2ms 146.9MB 22ms 18ms truffleruby 22.2.0
ruby 1.rb 70ms 0.7ms 29.9MB 48ms 10ms ruby 3.1.2
ruby 1.rb 233ms 0.5ms 286.6MB 96ms 124ms 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 427ms 0.9ms 47.3MB 397ms 13ms ruby 3.1.2
ruby 1.rb 590ms 2.4ms 305.4MB 437ms 140ms ruby/yjit 3.1.2
ruby 1.rb timeout 0.0ms 0.0MB 0ms 0ms truffleruby 22.2.0

Input: canada 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ruby 1.rb 3979ms 199ms 162.0MB 3883ms 77ms ruby 3.1.2
ruby 1.rb 4022ms 3.4ms 419.0MB 3823ms 180ms ruby/yjit 3.1.2
ruby 1.rb timeout 0.0ms 0.0MB 0ms 0ms truffleruby 22.2.0

lru

Input: 1000 1000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
odin 1.odin 182ms 0.9ms 1.9MB 170ms 0ms odin 2022
ruby 1.rb 608ms 8.8ms 30.2MB 583ms 10ms ruby 3.1.2
ruby 1.rb 618ms 2.7ms 286.7MB 470ms 137ms ruby/yjit 3.1.2
ruby 1-m.rb 796ms 85ms 353.7MB 1177ms 83ms truffleruby 22.2.0

Input: 1000 3000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
odin 1.odin 542ms 0.4ms 1.9MB 530ms 0ms odin 2022
ruby 1.rb 1376ms 7.7ms 286.7MB 1237ms 123ms ruby/yjit 3.1.2
ruby 1.rb 1392ms 11ms 339.9MB 1927ms 120ms truffleruby 22.2.0
ruby 1.rb 1664ms 3.2ms 30.2MB 1647ms 7ms ruby 3.1.2

Input: 100 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
odin 1.odin 86ms 2.6ms 0.9MB 73ms 0ms odin 2022
ruby 1.rb 335ms 4.9ms 29.9MB 320ms 3ms ruby 3.1.2
ruby 1.rb 427ms 1.6ms 286.6MB 283ms 127ms ruby/yjit 3.1.2
ruby 1-m.rb 536ms 8.3ms 301.8MB 823ms 80ms truffleruby 22.2.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.2.0

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ruby 1-m.rb 3188ms 28ms 570.1MB 5863ms 187ms truffleruby 22.2.0
ruby 1.rb 3898ms 7.4ms 300.7MB 3730ms 153ms ruby/yjit 3.1.2
ruby 1.rb 4753ms 18ms 44.3MB 4720ms 17ms ruby 3.1.2

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ruby 2.rb 1099ms 4.0ms 307.0MB 1397ms 73ms truffleruby 22.2.0
odin 1.odin 2503ms 2.1ms 0.9MB 2490ms 0ms odin 2022
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
odin 1.odin 253ms 0.5ms 0.9MB 243ms 0ms odin 2022
ruby 2-m.rb 424ms 5.3ms 303.8MB 673ms 80ms truffleruby 22.2.0
ruby 2.rb 2352ms 3.8ms 286.7MB 2193ms 140ms ruby/yjit 3.1.2
ruby 2.rb 3236ms 19ms 29.9MB 3217ms 0ms ruby 3.1.2

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
odin 1.odin 710ms 43ms 40.5MB 687ms 10ms odin 2022
odin 2.odin 1162ms 6.5ms 6.3MB 1147ms 0ms odin 2022
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.2.0

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
odin 1.odin 123ms 4.6ms 11.4MB 110ms 0ms odin 2022
odin 2.odin 284ms 1.6ms 2.9MB 273ms 0ms odin 2022
ruby 1.rb 3222ms 43ms 475.3MB 3633ms 153ms truffleruby 22.2.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
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.2.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ruby 1-m.rb 1915ms 11ms 398.1MB 3513ms 133ms truffleruby 22.2.0
ruby 1.rb 2479ms 4.7ms 162.9MB 2393ms 70ms ruby 3.1.2
ruby 1.rb 2632ms 6.4ms 420.7MB 2430ms 183ms ruby/yjit 3.1.2

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
odin 1.odin 4620ms 1.3ms 2.9MB 4603ms 0ms odin 2022
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.2.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
odin 1.odin 1158ms 1.0ms 2.4MB 1150ms 0ms odin 2022
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.2.0

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
odin 1.odin 292ms 0.1ms 1.9MB 277ms 0ms odin 2022
ruby 4.rb 2453ms 17ms 460.5MB 2993ms 143ms truffleruby 22.2.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