Julia VS Ruby benchmarks

Current benchmark data was generated on Mon Feb 06 2023, 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 52ms 3.6ms 165.0MB 28ms 30ms truffleruby 22.3.1
ruby 1.rb 77ms 1.6ms 32.3MB 52ms 10ms ruby/yjit 3.2.0
ruby 1.rb 81ms 1.0ms 32.2MB 54ms 16ms ruby 3.2.0
julia 1.jl 211ms 11ms 166.7MB 103ms 110ms julia/aot 1.8.5
julia 1.jl 226ms 7.5ms 171.7MB 130ms 104ms julia 1.8.5

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
julia 7.jl 551ms 2.0ms 168.3MB 490ms 147ms julia/aot 1.8.5
julia 7.jl 716ms 7.3ms 223.4MB 647ms 150ms julia 1.8.5
ruby 2.rb 1216ms 34ms 313.2MB 1420ms 117ms truffleruby 22.3.1
ruby 2.rb timeout 0.0ms 32.1MB 4970ms 13ms ruby 3.2.0
ruby 2.rb timeout 0.0ms 33.0MB 4967ms 17ms ruby/yjit 3.2.0

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
julia 7.jl 271ms 3.4ms 170.4MB 197ms 143ms julia/aot 1.8.5
julia 7.jl 435ms 3.0ms 225.1MB 367ms 150ms julia 1.8.5
ruby 2-m.rb 452ms 38ms 311.2MB 690ms 93ms truffleruby 22.3.1
ruby 2.rb 2122ms 1.9ms 32.9MB 2093ms 13ms ruby/yjit 3.2.0
ruby 2.rb 3393ms 17ms 32.2MB 3363ms 17ms ruby 3.2.0

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
julia 1.jl 439ms 1.7ms 156.1MB 383ms 140ms julia/aot 1.8.5
julia 1.jl 557ms 3.6ms 201.2MB 487ms 153ms julia 1.8.5
ruby 1.rb timeout 0.0ms 344.6MB 4847ms 130ms ruby 3.2.0
ruby 1.rb timeout 0.0ms 345.0MB 4833ms 147ms ruby/yjit 3.2.0
ruby 1.rb timeout 0.0ms 684.4MB 5003ms 193ms truffleruby 22.3.1

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
julia 1.jl 240ms 0.8ms 150.3MB 173ms 107ms julia/aot 1.8.5
julia 1.jl 361ms 2.5ms 197.4MB 303ms 143ms julia 1.8.5
ruby 1.rb 3311ms 25ms 430.9MB 3863ms 153ms truffleruby 22.3.1
ruby 1.rb timeout 0.0ms 151.0MB 4900ms 77ms ruby 3.2.0
ruby 1.rb timeout 0.0ms 151.6MB 4913ms 63ms ruby/yjit 3.2.0

binarytrees

Input: 18

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
julia 4.jl 1231ms 4.7ms 241.4MB 1120ms 197ms julia 1.8.5
ruby 1.rb timeout 0.0ms 72.6MB 4943ms 40ms ruby 3.2.0
ruby 1.rb timeout 0.0ms 100.2MB 4937ms 43ms ruby/yjit 3.2.0
ruby 1.rb timeout 0.0ms 499.1MB 8423ms 310ms truffleruby 22.3.1

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
julia 4.jl 343ms 1.7ms 219.2MB 270ms 157ms julia 1.8.5
ruby 1.rb 600ms 3.1ms 40.7MB 567ms 17ms ruby/yjit 3.2.0
ruby 1.rb 1122ms 5.1ms 40.2MB 1097ms 13ms ruby 3.2.0
ruby 1-m.rb 1195ms 48ms 434.8MB 1953ms 170ms truffleruby 22.3.1

fannkuch-redux

Input: 11

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
julia 2-m.jl 1676ms 9.2ms 211.9MB 2847ms 160ms julia 1.8.5

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
julia 2-m.jl 562ms 2.3ms 209.7MB 690ms 153ms julia 1.8.5

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
julia 7-m.jl 676ms 2.2ms 302.8MB 877ms 187ms julia 1.8.5
ruby 6.rb 2378ms 0.7ms 43.6MB 2337ms 27ms ruby/yjit 3.2.0
ruby 6-m.rb 2793ms 58ms 383.3MB 4990ms 307ms truffleruby 22.3.1
ruby 6.rb 4253ms 47ms 43.1MB 4210ms 27ms ruby 3.2.0

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ruby 6.rb 312ms 1.0ms 35.0MB 277ms 17ms ruby/yjit 3.2.0
julia 7.jl 501ms 1.6ms 221.6MB 617ms 130ms julia 1.8.5
ruby 6.rb 502ms 6.0ms 34.4MB 473ms 13ms ruby 3.2.0
ruby 6-m.rb 905ms 19ms 321.2MB 1523ms 133ms truffleruby 22.3.1

knucleotide

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
julia 8.jl 1218ms 8.6ms 273.9MB 1553ms 187ms julia 1.8.5

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
julia 8.jl 846ms 13ms 267.0MB 930ms 153ms julia 1.8.5

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
julia 3.jl 722ms 3.3ms 176.1MB 667ms 140ms julia 1.8.5
julia 1.jl 1553ms 16ms 260.9MB 1447ms 190ms julia 1.8.5
ruby 1.rb timeout 0.0ms 157.8MB 4917ms 67ms ruby 3.2.0
ruby 1.rb timeout 0.0ms 158.5MB 4903ms 77ms ruby/yjit 3.2.0
ruby 1.rb timeout 0.0ms 431.5MB 9403ms 223ms truffleruby 22.3.1

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
julia 3.jl 354ms 0.7ms 174.9MB 277ms 163ms julia 1.8.5
julia 1.jl 916ms 52ms 260.0MB 790ms 187ms julia 1.8.5
ruby 1-m.rb 2269ms 60ms 418.2MB 4133ms 190ms truffleruby 22.3.1
ruby 1.rb 3194ms 6.2ms 158.6MB 3097ms 77ms ruby/yjit 3.2.0
ruby 1.rb 3219ms 10ms 157.8MB 3123ms 77ms ruby 3.2.0

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
julia 2-m.jl 1237ms 1.0ms 193.9MB 2083ms 140ms julia 1.8.5
julia 3-m.jl 2142ms 2.6ms 211.2MB 3783ms 160ms julia 1.8.5
ruby 4.rb timeout 0.0ms 32.1MB 4970ms 13ms ruby 3.2.0
ruby 4.rb timeout 0.0ms 32.8MB 4963ms 13ms ruby/yjit 3.2.0
ruby 4.rb timeout 0.0ms 389.6MB 5257ms 167ms truffleruby 22.3.1

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
julia 2-m.jl 571ms 2.5ms 192.3MB 777ms 147ms julia 1.8.5
julia 3-m.jl 855ms 17ms 210.0MB 1257ms 160ms julia 1.8.5
ruby 4.rb timeout 0.0ms 32.2MB 4973ms 7ms ruby 3.2.0
ruby 4.rb timeout 0.0ms 32.8MB 4967ms 17ms ruby/yjit 3.2.0
ruby 4.rb timeout 0.0ms 457.7MB 5487ms 180ms truffleruby 22.3.1

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
julia 2.jl 408ms 1.0ms 194.4MB 473ms 127ms julia 1.8.5
julia 3.jl 519ms 5.1ms 210.5MB 603ms 167ms julia 1.8.5
ruby 4.rb 2875ms 14ms 407.1MB 3453ms 140ms truffleruby 22.3.1
ruby 4.rb timeout 0.0ms 32.4MB 4970ms 10ms ruby 3.2.0
ruby 4.rb timeout 0.0ms 32.8MB 4970ms 10ms ruby/yjit 3.2.0