Julia VS Ruby 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.)

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

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

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

fannkuch-redux

Input: 11

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
julia 2-m.jl 1698ms 9.9ms 232.2MB 2857ms 173ms julia 1.8.1

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
julia 2.jl 588ms 2.1ms 230.6MB 707ms 157ms julia 1.8.1

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

knucleotide

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
julia 8.jl 1235ms 3.4ms 317.7MB 1547ms 190ms julia 1.8.1

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
julia 8.jl 869ms 4.0ms 303.0MB 910ms 197ms julia 1.8.1

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