Haxe VS Ruby benchmarks

Current benchmark data was generated on Tue Apr 01 2025, 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.)

binarytrees

Input: 18

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
haxe 1.hx 1322ms 17ms 143.9MB 1503ms 73ms haxe/cpp 4.3.6
haxe 2.hx 4401ms 35ms 495.1MB 4920ms 270ms haxe/cpp 4.3.6
ruby 1-m.rb 4767ms 126ms 811.9MB 6707ms 477ms truffleruby 24.2.0
ruby 1.rb 4863ms 1.8ms 109.4MB 4763ms 83ms ruby/yjit 3.4.2
haxe 1.hx timeout 0.0ms 48.6MB 5667ms 400ms haxe/hl/c 4.3.6
haxe 2.hx timeout 0.0ms 83.2MB 5040ms 660ms haxe/hl/c 4.3.6
haxe 1.hx timeout 0.0ms 50.6MB 7873ms 437ms haxe/hl/jit 1.15.0
haxe 2.hx timeout 0.0ms 130.9MB 7293ms 790ms haxe/hl/jit 1.15.0
ruby 1.rb timeout 0.0ms 70.1MB 4940ms 43ms ruby 3.4.2

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
haxe 1.hx 90ms 1.5ms 25.6MB 80ms 10ms haxe/cpp 4.3.6
haxe 2.hx 397ms 9.3ms 58.3MB 420ms 27ms haxe/cpp 4.3.6
ruby 1.rb 508ms 33ms 20.3MB 483ms 10ms ruby/yjit 3.4.2
ruby 1-m.rb 555ms 69ms 418.8MB 1097ms 167ms truffleruby 24.2.0
haxe 1.hx 644ms 1.9ms 8.8MB 610ms 50ms haxe/hl/c 4.3.6
haxe 1.hx 680ms 1.9ms 11.3MB 743ms 57ms haxe/hl/jit 1.15.0
haxe 2.hx 925ms 6.4ms 13.6MB 817ms 150ms haxe/hl/c 4.3.6
ruby 1.rb 928ms 2.7ms 19.6MB 903ms 10ms ruby 3.4.2
haxe 2.hx 1120ms 30ms 25.1MB 1137ms 180ms haxe/hl/jit 1.15.0

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ruby 6.rb 2077ms 33ms 23.0MB 2053ms 10ms ruby/yjit 3.4.2
ruby 6-m.rb 2154ms 27ms 419.9MB 5600ms 347ms truffleruby 24.2.0
haxe 1.hx 2398ms 8.9ms 25.6MB 2283ms 227ms haxe/cpp 4.3.6
ruby 6.rb 3878ms 66ms 22.5MB 3853ms 13ms ruby 3.4.2
haxe 1.hx timeout 0.0ms 3.2MB 4307ms 903ms haxe/hl/c 4.3.6
haxe 1.hx timeout 0.0ms 3.7MB 4363ms 870ms haxe/hl/jit 1.15.0

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
haxe 1.hx 256ms 2.4ms 25.6MB 223ms 27ms haxe/cpp 4.3.6
ruby 6.rb 265ms 3.1ms 15.0MB 247ms 7ms ruby/yjit 3.4.2
ruby 6.rb 439ms 2.9ms 14.5MB 420ms 3ms ruby 3.4.2
haxe 1.hx 670ms 2.5ms 3.4MB 560ms 123ms haxe/hl/c 4.3.6
haxe 1.hx 679ms 4.7ms 3.8MB 593ms 103ms haxe/hl/jit 1.15.0
ruby 6-m.rb 812ms 40ms 382.1MB 2017ms 183ms truffleruby 24.2.0

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
haxe 1.hx 2.0ms 0.1ms 2.8MB 0ms 0ms haxe/hl/c 4.3.6
haxe 1.hx 2.5ms 0.3ms 4.4MB 0ms 0ms haxe/cpp 4.3.6
haxe 1.hx 3.7ms 0.2ms 2.8MB 0ms 0ms haxe/hl/jit 1.15.0
ruby 1.rb 35ms 0.3ms 139.0MB 12ms 24ms truffleruby 24.2.0
ruby 1.rb 53ms 1.0ms 13.1MB 40ms 2ms ruby/yjit 3.4.2
ruby 1.rb 54ms 1.4ms 12.9MB 40ms 2ms ruby 3.4.2

lru

Input: 1000 1000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
haxe 1.hx 136ms 4.1ms 20.4MB 120ms 3ms haxe/cpp 4.3.6
haxe 1.hx 142ms 11ms 3.1MB 137ms 0ms haxe/hl/c 4.3.6
haxe 1.hx 157ms 2.5ms 3.8MB 147ms 0ms haxe/hl/jit 1.15.0
ruby 1.rb 331ms 1.9ms 13.5MB 313ms 3ms ruby/yjit 3.4.2
ruby 1.rb 541ms 20ms 13.0MB 527ms 3ms ruby 3.4.2
ruby 1-m.rb 654ms 36ms 370.3MB 1150ms 157ms truffleruby 24.2.0

Input: 1000 3000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
haxe 1.hx 376ms 2.1ms 25.5MB 360ms 3ms haxe/cpp 4.3.6
haxe 1.hx 396ms 1.2ms 3.0MB 383ms 0ms haxe/hl/c 4.3.6
haxe 1.hx 460ms 6.3ms 3.8MB 450ms 0ms haxe/hl/jit 1.15.0
ruby 1.rb 876ms 8.2ms 13.5MB 857ms 7ms ruby/yjit 3.4.2
ruby 1-m.rb 1234ms 21ms 404.6MB 1727ms 163ms truffleruby 24.2.0
ruby 1.rb 1479ms 10ms 13.0MB 1457ms 10ms ruby 3.4.2

Input: 100 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
haxe 1.hx 63ms 0.9ms 12.6MB 50ms 0ms haxe/cpp 4.3.6
haxe 1.hx 68ms 0.3ms 3.0MB 60ms 0ms haxe/hl/c 4.3.6
haxe 1.hx 81ms 0.9ms 3.6MB 70ms 0ms haxe/hl/jit 1.15.0
ruby 1.rb 192ms 1.5ms 13.5MB 170ms 7ms ruby/yjit 3.4.2
ruby 1.rb 292ms 3.4ms 12.9MB 277ms 0ms ruby 3.4.2
ruby 1-m.rb 512ms 30ms 361.1MB 973ms 137ms truffleruby 24.2.0

merkletrees

Input: 17

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
haxe 1.hx 898ms 3.0ms 95.0MB 997ms 47ms haxe/cpp 4.3.6
ruby 1-m.rb 4430ms 469ms 527.4MB 11217ms 380ms truffleruby 24.2.0
haxe 1.hx timeout 0.0ms 32.8MB 4963ms 503ms haxe/hl/c 4.3.6
haxe 1.hx timeout 0.0ms 55.0MB 6013ms 480ms haxe/hl/jit 1.15.0
ruby 1.rb timeout 0.0ms 93.6MB 4933ms 50ms ruby 3.4.2
ruby 1.rb timeout 0.0ms 94.8MB 4940ms 50ms ruby/yjit 3.4.2

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
haxe 1.hx 167ms 1.1ms 26.6MB 167ms 10ms haxe/cpp 4.3.6
haxe 1.hx 1301ms 7.8ms 10.8MB 1233ms 140ms haxe/hl/c 4.3.6
haxe 1.hx 1456ms 27ms 20.3MB 1483ms 140ms haxe/hl/jit 1.15.0
ruby 1-m.rb 1938ms 44ms 591.3MB 5030ms 250ms truffleruby 24.2.0
ruby 1.rb 3421ms 15ms 38.3MB 3377ms 30ms ruby/yjit 3.4.2
ruby 1.rb 4437ms 12ms 37.8MB 4397ms 27ms ruby 3.4.2

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ruby 2.rb 827ms 10ms 306.8MB 1060ms 120ms truffleruby 24.2.0
haxe 2.hx 857ms 6.0ms 3.1MB 847ms 0ms haxe/hl/c 4.3.6
haxe 1.hx 1081ms 9.3ms 3.0MB 1070ms 0ms haxe/hl/c 4.3.6
haxe 3.hx 1404ms 8.2ms 25.6MB 1597ms 40ms haxe/cpp 4.3.6
haxe 2.hx 2407ms 5.9ms 3.6MB 2397ms 0ms haxe/hl/jit 1.15.0
haxe 1.hx 2470ms 3.4ms 3.6MB 2460ms 0ms haxe/hl/jit 1.15.0
haxe 1.hx timeout 0.0ms 4.4MB 4990ms 0ms haxe/cpp 4.3.6
haxe 2.hx timeout 0.0ms 4.4MB 4990ms 0ms haxe/cpp 4.3.6
haxe 3.hx timeout 0.0ms 3.3MB 3940ms 1557ms haxe/hl/c 4.3.6
haxe 3.hx timeout 0.0ms 3.8MB 4090ms 1307ms haxe/hl/jit 1.15.0
ruby 2.rb timeout 0.0ms 12.9MB 4980ms 7ms ruby 3.4.2
ruby 2.rb timeout 0.0ms 13.5MB 4980ms 7ms ruby/yjit 3.4.2

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
haxe 2.hx 90ms 2.0ms 3.0MB 80ms 0ms haxe/hl/c 4.3.6
haxe 1.hx 113ms 3.0ms 3.0MB 107ms 0ms haxe/hl/c 4.3.6
haxe 3.hx 153ms 0.4ms 25.6MB 157ms 10ms haxe/cpp 4.3.6
haxe 2.hx 246ms 1.2ms 3.6MB 240ms 0ms haxe/hl/jit 1.15.0
haxe 1.hx 253ms 3.5ms 3.6MB 243ms 0ms haxe/hl/jit 1.15.0
ruby 2-m.rb 312ms 17ms 309.9MB 547ms 110ms truffleruby 24.2.0
haxe 3.hx 671ms 2.1ms 3.3MB 513ms 213ms haxe/hl/c 4.3.6
haxe 2.hx 679ms 11ms 4.4MB 670ms 0ms haxe/cpp 4.3.6
haxe 3.hx 778ms 14ms 3.9MB 653ms 187ms haxe/hl/jit 1.15.0
haxe 1.hx 810ms 2.1ms 4.4MB 800ms 0ms haxe/cpp 4.3.6
ruby 2.rb 1069ms 6.2ms 13.5MB 1050ms 7ms ruby/yjit 3.4.2
ruby 2.rb 2781ms 57ms 12.9MB 2763ms 7ms ruby 3.4.2

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
haxe 1.hx 3927ms 1.7ms 3.4MB 3917ms 0ms haxe/hl/c 4.3.6
haxe 1.hx timeout 0.0ms 7.0MB 4990ms 0ms haxe/cpp 4.3.6
haxe 1.hx timeout 0.0ms 3.9MB 4990ms 0ms haxe/hl/jit 1.15.0
ruby 4.rb timeout 0.0ms 12.9MB 4987ms 0ms ruby 3.4.2
ruby 4.rb timeout 0.0ms 13.5MB 4983ms 3ms ruby/yjit 3.4.2
ruby 4.rb timeout 0.0ms 425.1MB 5170ms 247ms truffleruby 24.2.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
haxe 1.hx 992ms 1.9ms 3.1MB 980ms 0ms haxe/hl/c 4.3.6
haxe 1.hx 2399ms 0.8ms 6.6MB 2390ms 0ms haxe/cpp 4.3.6
ruby 4.rb 4858ms 56ms 417.3MB 5143ms 210ms truffleruby 24.2.0
haxe 1.hx timeout 0.0ms 3.8MB 4987ms 0ms haxe/hl/jit 1.15.0
ruby 4.rb timeout 0.0ms 12.9MB 4983ms 7ms ruby 3.4.2
ruby 4.rb timeout 0.0ms 13.5MB 4980ms 7ms ruby/yjit 3.4.2

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
haxe 1.hx 255ms 2.7ms 3.1MB 243ms 0ms haxe/hl/c 4.3.6
haxe 1.hx 605ms 0.7ms 5.3MB 593ms 0ms haxe/cpp 4.3.6
ruby 4.rb 1459ms 49ms 378.8MB 1800ms 147ms truffleruby 24.2.0
haxe 1.hx 2312ms 0.5ms 3.6MB 2300ms 0ms haxe/hl/jit 1.15.0
ruby 4.rb timeout 0.0ms 13.0MB 4983ms 0ms ruby 3.4.2
ruby 4.rb timeout 0.0ms 13.8MB 4980ms 3ms ruby/yjit 3.4.2