Ruby VS Julia benchmarks

Current benchmark data was generated on Fri Sep 30 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
julia 4.jl 1267ms 4.9ms 258.1MB 1150ms 207ms julia 1.8.1
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
julia 4.jl 364ms 1.2ms 239.6MB 287ms 160ms julia 1.8.1
ruby 1.rb 1035ms 3.3ms 292.0MB 857ms 163ms ruby/yjit 3.1.2
ruby 1.rb 1079ms 3.4ms 35.5MB 1033ms 27ms ruby 3.1.2
ruby 1-m.rb 1143ms 28ms 386.2MB 1847ms 157ms truffleruby 22.2.0

coro-prime-sieve

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ruby 1.rb 3425ms 53ms 336.7MB 3213ms 193ms ruby/yjit 3.1.2
ruby 1.rb 4508ms 91ms 80.1MB 4427ms 60ms 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 290ms 3.0ms 42.2MB 250ms 20ms ruby 3.1.2
ruby 1.rb 428ms 4.6ms 298.7MB 273ms 137ms 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
julia 7-m.jl 665ms 11ms 297.6MB 873ms 180ms julia 1.8.1
ruby 6.rb 2890ms 6.9ms 295.3MB 2730ms 143ms ruby/yjit 3.1.2
ruby 6.rb 4559ms 42ms 39.4MB 4527ms 13ms 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
julia 7.jl 506ms 6.2ms 228.8MB 583ms 173ms julia 1.8.1
ruby 6.rb 517ms 5.9ms 31.1MB 490ms 13ms ruby 3.1.2
ruby 6.rb 530ms 2.3ms 287.7MB 373ms 137ms ruby/yjit 3.1.2
ruby 6-m.rb 1710ms 5.1ms 368.7MB 3030ms 150ms truffleruby 22.2.0

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ruby 1.rb 48ms 0.8ms 145.7MB 22ms 24ms truffleruby 22.2.0
ruby 1.rb 73ms 0.7ms 30.0MB 50ms 10ms ruby 3.1.2
julia 1.jl 234ms 1.7ms 188.2MB 140ms 108ms julia 1.8.1
julia 1.jl 235ms 57ms 175.4MB 120ms 104ms julia/aot 1.8.2
ruby 1.rb 259ms 0.7ms 286.6MB 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 448ms 12ms 48.7MB 413ms 10ms ruby 3.1.2
ruby 1.rb 627ms 2.2ms 305.0MB 440ms 167ms 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 3913ms 2.7ms 162.4MB 3813ms 83ms ruby 3.1.2
ruby 1.rb 4091ms 3.2ms 419.6MB 3837ms 237ms 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
ruby 1.rb 660ms 1.2ms 286.7MB 510ms 133ms ruby/yjit 3.1.2
ruby 1.rb 676ms 6.3ms 30.1MB 653ms 3ms ruby 3.1.2
ruby 1-m.rb 937ms 23ms 313.9MB 1377ms 110ms truffleruby 22.2.0

Input: 1000 3000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ruby 1.rb 1460ms 4.2ms 286.7MB 1310ms 130ms ruby/yjit 3.1.2
ruby 1.rb 1804ms 16ms 343.9MB 2420ms 137ms truffleruby 22.2.0
ruby 1.rb 1879ms 3.5ms 30.2MB 1850ms 13ms ruby 3.1.2

Input: 100 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ruby 1.rb 373ms 2.8ms 29.8MB 353ms 7ms ruby 3.1.2
ruby 1.rb 459ms 1.0ms 286.7MB 297ms 143ms ruby/yjit 3.1.2
ruby 1-m.rb 646ms 3.5ms 299.9MB 960ms 113ms 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 3686ms 45ms 554.1MB 6717ms 240ms truffleruby 22.2.0
ruby 1.rb 4073ms 11ms 300.7MB 3900ms 160ms ruby/yjit 3.1.2
ruby 1.rb 4835ms 18ms 44.4MB 4800ms 23ms ruby 3.1.2

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
julia 7.jl 547ms 2.9ms 175.1MB 497ms 133ms julia/aot 1.8.2
julia 7.jl 728ms 1.2ms 246.3MB 660ms 157ms julia 1.8.1
ruby 2.rb 1295ms 5.6ms 306.8MB 1593ms 117ms truffleruby 22.2.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
julia 7.jl 308ms 70ms 179.3MB 203ms 143ms julia/aot 1.8.2
julia 7.jl 448ms 5.0ms 247.9MB 347ms 180ms julia 1.8.1
ruby 2-m.rb 493ms 6.7ms 304.9MB 767ms 113ms truffleruby 22.2.0
ruby 2.rb 2395ms 10ms 286.8MB 2240ms 133ms ruby/yjit 3.1.2
ruby 2.rb 3243ms 20ms 29.9MB 3217ms 13ms ruby 3.1.2

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
julia 1.jl 434ms 3.0ms 169.0MB 393ms 127ms julia/aot 1.8.2
julia 1.jl 572ms 4.4ms 218.1MB 503ms 150ms julia 1.8.1
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
julia 1.jl 238ms 1.5ms 162.3MB 177ms 103ms julia/aot 1.8.2
julia 1.jl 371ms 2.2ms 211.9MB 293ms 160ms julia 1.8.1
ruby 1.rb 4157ms 8.2ms 458.8MB 4563ms 180ms 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
julia 3.jl 733ms 1.1ms 195.4MB 667ms 150ms julia 1.8.1
julia 1.jl 1660ms 14ms 278.2MB 1540ms 203ms julia 1.8.1
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
julia 3.jl 377ms 22ms 193.9MB 303ms 147ms julia 1.8.1
julia 1.jl 963ms 55ms 276.0MB 827ms 200ms julia 1.8.1
ruby 1-m.rb 2343ms 8.7ms 410.5MB 4263ms 187ms truffleruby 22.2.0
ruby 1.rb 2950ms 4.1ms 162.2MB 2857ms 77ms ruby 3.1.2
ruby 1.rb 3100ms 8.3ms 420.7MB 2860ms 223ms ruby/yjit 3.1.2

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
julia 2-m.jl 1239ms 8.9ms 204.1MB 2073ms 147ms julia 1.8.1
julia 3-m.jl 2089ms 3.2ms 221.8MB 3677ms 177ms julia 1.8.1
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
julia 2-m.jl 573ms 4.4ms 203.2MB 787ms 130ms julia 1.8.1
julia 3-m.jl 850ms 8.0ms 221.4MB 1227ms 177ms julia 1.8.1
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
julia 2.jl 410ms 3.0ms 205.6MB 457ms 143ms julia 1.8.1
julia 3.jl 519ms 3.7ms 220.5MB 617ms 147ms julia 1.8.1
ruby 4.rb 3041ms 38ms 368.9MB 3677ms 137ms 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