Codon VS Ruby benchmarks

Current benchmark data was generated on Sun Dec 01 2024, full log can be found HERE

CONTRIBUTIONS are WELCOME!

[x86_64][4 cores] AMD EPYC 7763 64-Core Processor (Model 1)

* -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
codon 1.py 4.2ms 0.5ms 6.9MB 0ms 0ms codon 0.17.0
ruby 1.rb 41ms 0.8ms 168.5MB 20ms 26ms truffleruby 24.1.1
ruby 1.rb 69ms 1.8ms 28.0MB 48ms 12ms ruby 3.3.6
ruby 1.rb 70ms 0.6ms 28.1MB 42ms 14ms ruby/yjit 3.3.6

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ruby 2.rb 861ms 20ms 329.1MB 1117ms 120ms truffleruby 24.1.1
codon 1.py 1306ms 9.3ms 7.7MB 1293ms 0ms codon 0.17.0
ruby 2.rb timeout 0.0ms 28.0MB 4967ms 17ms ruby 3.3.6
ruby 2.rb timeout 0.0ms 28.3MB 4963ms 17ms ruby/yjit 3.3.6

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
codon 1.py 136ms 1.5ms 7.7MB 120ms 0ms codon 0.17.0
ruby 2-m.rb 323ms 3.4ms 328.9MB 570ms 107ms truffleruby 24.1.1
ruby 2.rb 1450ms 8.5ms 28.3MB 1413ms 23ms ruby/yjit 3.3.6
ruby 2.rb 2881ms 59ms 28.1MB 2850ms 20ms ruby 3.3.6

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
codon 1.py 388ms 15ms 46.5MB 370ms 3ms codon 0.17.0
codon 2.py 904ms 9.6ms 99.9MB 880ms 20ms codon 0.17.0
ruby 1.rb timeout 0.0ms 340.6MB 4843ms 143ms ruby 3.3.6
ruby 1.rb timeout 0.0ms 341.9MB 4833ms 150ms ruby/yjit 3.3.6
ruby 1.rb timeout 0.0ms 764.3MB 5047ms 183ms truffleruby 24.1.1

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
codon 1.py 74ms 3.4ms 17.3MB 63ms 0ms codon 0.17.0
codon 2.py 199ms 0.4ms 25.7MB 190ms 0ms codon 0.17.0
ruby 1-m.rb 1748ms 14ms 492.6MB 2550ms 163ms truffleruby 24.1.1
ruby 1.rb 3501ms 85ms 146.6MB 3403ms 80ms ruby/yjit 3.3.6
ruby 1.rb 4518ms 42ms 146.4MB 4413ms 83ms ruby 3.3.6