Ruby VS Haxe benchmarks

Current benchmark data was generated on Sun Jul 13 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 1311ms 12ms 144.0MB 1490ms 67ms haxe/cpp 4.3.6
haxe 2.hx 4393ms 32ms 495.3MB 4950ms 253ms haxe/cpp 4.3.6
ruby 1.rb 4770ms 133ms 110.1MB 4677ms 77ms ruby/yjit 3.4.4
haxe 1.hx timeout 0.0ms 48.6MB 5573ms 410ms haxe/hl/c 4.3.6
haxe 2.hx timeout 0.0ms 83.0MB 5077ms 677ms haxe/hl/c 4.3.6
haxe 1.hx timeout 0.0ms 51.1MB 7727ms 420ms haxe/hl/jit 1.16.0
haxe 2.hx timeout 0.0ms 130.9MB 7430ms 763ms haxe/hl/jit 1.16.0
ruby 1.rb timeout 0.0ms 70.5MB 4950ms 33ms ruby 3.4.4
ruby 1.rb timeout 0.0ms 796.7MB 6620ms 720ms truffleruby 24.2.1

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
haxe 1.hx 89ms 1.8ms 25.6MB 83ms 7ms haxe/cpp 4.3.6
haxe 2.hx 401ms 15ms 58.3MB 437ms 27ms haxe/cpp 4.3.6
ruby 1.rb 498ms 0.9ms 20.3MB 473ms 10ms ruby/yjit 3.4.4
ruby 1-m.rb 503ms 8.2ms 407.1MB 980ms 150ms truffleruby 24.2.1
haxe 1.hx 639ms 3.4ms 8.9MB 610ms 40ms haxe/hl/c 4.3.6
haxe 1.hx 676ms 10ms 11.2MB 747ms 53ms haxe/hl/jit 1.16.0
haxe 2.hx 916ms 2.0ms 13.6MB 807ms 147ms haxe/hl/c 4.3.6
ruby 1.rb 947ms 3.2ms 19.5MB 923ms 13ms ruby 3.4.4
haxe 2.hx 954ms 12ms 25.0MB 927ms 173ms haxe/hl/jit 1.16.0

coro-prime-sieve

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ruby 1.rb 1449ms 20ms 63.8MB 1373ms 57ms ruby/yjit 3.4.4
ruby 1.rb 1913ms 42ms 63.0MB 1837ms 60ms ruby 3.4.4
ruby 1.rb timeout 0.0ms 364.7MB 4603ms 1530ms truffleruby 24.2.1

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ruby 1.rb 150ms 1.5ms 25.6MB 120ms 20ms ruby/yjit 3.4.4
ruby 1.rb 185ms 1.9ms 25.0MB 157ms 13ms ruby 3.4.4
ruby 1.rb timeout 0.0ms 346.5MB 4577ms 1460ms truffleruby 24.2.1

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ruby 6.rb 2046ms 3.0ms 23.0MB 2023ms 10ms ruby/yjit 3.4.4
ruby 6-m.rb 2107ms 209ms 406.5MB 5403ms 323ms truffleruby 24.2.1
haxe 1.hx 2367ms 7.6ms 25.6MB 2247ms 210ms haxe/cpp 4.3.6
ruby 6.rb 3692ms 15ms 22.4MB 3673ms 10ms ruby 3.4.4
haxe 1.hx timeout 0.0ms 3.2MB 4373ms 847ms haxe/hl/c 4.3.6
haxe 1.hx timeout 0.0ms 3.6MB 4380ms 853ms haxe/hl/jit 1.16.0

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
haxe 1.hx 253ms 3.1ms 25.6MB 230ms 20ms haxe/cpp 4.3.6
ruby 6.rb 259ms 4.3ms 15.2MB 237ms 10ms ruby/yjit 3.4.4
ruby 6.rb 415ms 1.8ms 14.4MB 397ms 3ms ruby 3.4.4
haxe 1.hx 652ms 2.2ms 3.3MB 557ms 110ms haxe/hl/c 4.3.6
haxe 1.hx 680ms 1.4ms 3.6MB 590ms 107ms haxe/hl/jit 1.16.0
ruby 6-m.rb 843ms 29ms 380.9MB 2103ms 163ms truffleruby 24.2.1

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
haxe 1.hx 1.9ms 0.3ms 2.9MB 0ms 0ms haxe/hl/c 4.3.6
haxe 1.hx 2.3ms 0.3ms 4.3MB 0ms 0ms haxe/cpp 4.3.6
haxe 1.hx 3.6ms 0.4ms 2.9MB 0ms 0ms haxe/hl/jit 1.16.0
ruby 1.rb 34ms 0.4ms 141.1MB 12ms 24ms truffleruby 24.2.1
ruby 1.rb 51ms 1.1ms 12.8MB 38ms 0ms ruby 3.4.4
ruby 1.rb 53ms 0.4ms 12.9MB 38ms 4ms ruby/yjit 3.4.4

json-serde

Input: sample 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ruby 1.rb 247ms 0.5ms 27.1MB 210ms 20ms ruby 3.4.4
ruby 1.rb 250ms 4.8ms 30.1MB 220ms 17ms ruby/yjit 3.4.4
ruby 1-m.rb 4251ms 31ms 506.4MB 11203ms 337ms truffleruby 24.2.1

Input: canada 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ruby 1.rb 2101ms 28ms 135.5MB 2013ms 73ms ruby/yjit 3.4.4
ruby 1.rb 2146ms 112ms 132.6MB 2067ms 67ms ruby 3.4.4
ruby 1.rb timeout 0.0ms 499.9MB 13243ms 367ms truffleruby 24.2.1

lru

Input: 1000 1000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
haxe 1.hx 135ms 2.7ms 20.4MB 120ms 7ms haxe/cpp 4.3.6
haxe 1.hx 136ms 1.8ms 3.0MB 130ms 0ms haxe/hl/c 4.3.6
haxe 1.hx 157ms 3.3ms 3.8MB 143ms 0ms haxe/hl/jit 1.16.0
ruby 1.rb 342ms 3.2ms 13.5MB 327ms 3ms ruby/yjit 3.4.4
ruby 1.rb 529ms 4.4ms 12.9MB 510ms 0ms ruby 3.4.4
ruby 1-m.rb 686ms 7.4ms 371.8MB 1270ms 140ms truffleruby 24.2.1

Input: 1000 3000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
haxe 1.hx 380ms 0.6ms 25.5MB 367ms 3ms haxe/cpp 4.3.6
haxe 1.hx 400ms 2.5ms 3.0MB 387ms 0ms haxe/hl/c 4.3.6
haxe 1.hx 461ms 1.2ms 3.8MB 450ms 0ms haxe/hl/jit 1.16.0
ruby 1.rb 910ms 1.6ms 13.5MB 890ms 10ms ruby/yjit 3.4.4
ruby 1-m.rb 1261ms 52ms 406.7MB 1777ms 167ms truffleruby 24.2.1
ruby 1.rb 1485ms 8.7ms 12.9MB 1470ms 3ms ruby 3.4.4

Input: 100 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
haxe 1.hx 63ms 0.1ms 12.3MB 50ms 0ms haxe/cpp 4.3.6
haxe 1.hx 67ms 0.7ms 3.1MB 60ms 0ms haxe/hl/c 4.3.6
haxe 1.hx 78ms 0.7ms 3.8MB 70ms 0ms haxe/hl/jit 1.16.0
ruby 1.rb 198ms 2.8ms 13.5MB 187ms 0ms ruby/yjit 3.4.4
ruby 1.rb 289ms 1.2ms 12.8MB 273ms 7ms ruby 3.4.4
ruby 1-m.rb 525ms 17ms 354.7MB 1033ms 137ms truffleruby 24.2.1

merkletrees

Input: 17

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
haxe 1.hx 910ms 10ms 95.0MB 1013ms 50ms haxe/cpp 4.3.6
ruby 1-m.rb 3861ms 33ms 612.1MB 9853ms 350ms truffleruby 24.2.1
haxe 1.hx timeout 0.0ms 32.6MB 4943ms 517ms haxe/hl/c 4.3.6
haxe 1.hx timeout 0.0ms 55.1MB 5973ms 470ms haxe/hl/jit 1.16.0
ruby 1.rb timeout 0.0ms 93.5MB 4947ms 40ms ruby 3.4.4
ruby 1.rb timeout 0.0ms 97.4MB 4940ms 50ms ruby/yjit 3.4.4

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
haxe 1.hx 174ms 3.9ms 26.6MB 180ms 10ms haxe/cpp 4.3.6
haxe 1.hx 1303ms 5.0ms 10.7MB 1240ms 137ms haxe/hl/c 4.3.6
haxe 1.hx 1313ms 5.8ms 20.4MB 1327ms 127ms haxe/hl/jit 1.16.0
ruby 1-m.rb 2066ms 110ms 488.8MB 5300ms 230ms truffleruby 24.2.1
ruby 1.rb 3236ms 25ms 38.3MB 3197ms 23ms ruby/yjit 3.4.4
ruby 1.rb 4321ms 12ms 37.6MB 4287ms 23ms ruby 3.4.4

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ruby 2.rb 836ms 14ms 325.0MB 1103ms 117ms truffleruby 24.2.1
haxe 2.hx 856ms 5.4ms 3.1MB 843ms 0ms haxe/hl/c 4.3.6
haxe 1.hx 1062ms 2.4ms 3.1MB 1053ms 0ms haxe/hl/c 4.3.6
haxe 3.hx 1386ms 1.4ms 25.8MB 1533ms 30ms haxe/cpp 4.3.6
haxe 2.hx 2400ms 5.3ms 3.6MB 2393ms 0ms haxe/hl/jit 1.16.0
haxe 1.hx 2475ms 2.8ms 3.8MB 2467ms 0ms haxe/hl/jit 1.16.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.1MB 3940ms 1570ms haxe/hl/c 4.3.6
haxe 3.hx timeout 0.0ms 4.0MB 4160ms 1310ms haxe/hl/jit 1.16.0
ruby 2.rb timeout 0.0ms 12.8MB 4983ms 3ms ruby 3.4.4
ruby 2.rb timeout 0.0ms 13.5MB 4977ms 10ms ruby/yjit 3.4.4

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
haxe 2.hx 89ms 2.0ms 3.0MB 80ms 0ms haxe/hl/c 4.3.6
haxe 1.hx 110ms 1.4ms 3.0MB 100ms 0ms haxe/hl/c 4.3.6
haxe 3.hx 152ms 0.9ms 25.6MB 153ms 7ms haxe/cpp 4.3.6
haxe 2.hx 245ms 0.5ms 3.8MB 237ms 0ms haxe/hl/jit 1.16.0
haxe 1.hx 252ms 1.0ms 3.6MB 240ms 0ms haxe/hl/jit 1.16.0
ruby 2-m.rb 309ms 6.6ms 309.6MB 560ms 103ms truffleruby 24.2.1
haxe 2.hx 674ms 2.5ms 4.4MB 663ms 0ms haxe/cpp 4.3.6
haxe 3.hx 677ms 2.3ms 3.1MB 523ms 210ms haxe/hl/c 4.3.6
haxe 3.hx 786ms 5.0ms 3.8MB 643ms 210ms haxe/hl/jit 1.16.0
haxe 1.hx 808ms 3.0ms 4.4MB 797ms 0ms haxe/cpp 4.3.6
ruby 2.rb 1028ms 6.1ms 13.5MB 1010ms 3ms ruby/yjit 3.4.4
ruby 2.rb 2980ms 14ms 12.8MB 2963ms 7ms ruby 3.4.4

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ruby 1.rb timeout 0.0ms 325.3MB 4850ms 133ms ruby 3.4.4
ruby 1.rb timeout 0.0ms 327.0MB 4847ms 140ms ruby/yjit 3.4.4
ruby 1.rb timeout 0.0ms 731.6MB 5070ms 153ms truffleruby 24.2.1

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ruby 1-m.rb 1697ms 10ms 473.8MB 2493ms 170ms truffleruby 24.2.1
ruby 1.rb 3416ms 80ms 131.8MB 3323ms 83ms ruby/yjit 3.4.4
ruby 1.rb 4472ms 16ms 131.0MB 4383ms 73ms ruby 3.4.4

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ruby 1.rb timeout 0.0ms 130.2MB 4863ms 123ms ruby 3.4.4
ruby 1.rb timeout 0.0ms 131.0MB 4833ms 150ms ruby/yjit 3.4.4
ruby 1.rb timeout 0.0ms 450.5MB 13320ms 430ms truffleruby 24.2.1

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ruby 1-m.rb 1668ms 200ms 395.7MB 4403ms 210ms truffleruby 24.2.1
ruby 1.rb 1766ms 80ms 130.9MB 1657ms 93ms ruby/yjit 3.4.4
ruby 1.rb 1816ms 25ms 130.3MB 1690ms 113ms ruby 3.4.4

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
haxe 1.hx 3902ms 1.6ms 3.4MB 3890ms 0ms haxe/hl/c 4.3.6
haxe 1.hx timeout 0.0ms 6.9MB 4990ms 0ms haxe/cpp 4.3.6
haxe 1.hx timeout 0.0ms 3.9MB 4990ms 0ms haxe/hl/jit 1.16.0
ruby 4.rb timeout 0.0ms 12.9MB 4983ms 7ms ruby 3.4.4
ruby 4.rb timeout 0.0ms 13.5MB 4980ms 0ms ruby/yjit 3.4.4
ruby 4.rb timeout 0.0ms 436.6MB 5167ms 240ms truffleruby 24.2.1

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
haxe 1.hx 985ms 5.5ms 3.1MB 973ms 0ms haxe/hl/c 4.3.6
haxe 1.hx 2400ms 2.6ms 6.6MB 2390ms 0ms haxe/cpp 4.3.6
ruby 4.rb 4848ms 12ms 433.6MB 5140ms 203ms truffleruby 24.2.1
haxe 1.hx timeout 0.0ms 3.9MB 4990ms 0ms haxe/hl/jit 1.16.0
ruby 4.rb timeout 0.0ms 12.8MB 4980ms 0ms ruby 3.4.4
ruby 4.rb timeout 0.0ms 13.5MB 4983ms 3ms ruby/yjit 3.4.4

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
haxe 1.hx 252ms 2.8ms 3.0MB 240ms 0ms haxe/hl/c 4.3.6
haxe 1.hx 603ms 0.4ms 5.4MB 590ms 0ms haxe/cpp 4.3.6
ruby 4.rb 1458ms 6.2ms 377.4MB 1793ms 157ms truffleruby 24.2.1
haxe 1.hx 2305ms 1.8ms 3.7MB 2297ms 0ms haxe/hl/jit 1.16.0
ruby 4.rb timeout 0.0ms 12.9MB 4980ms 3ms ruby 3.4.4
ruby 4.rb timeout 0.0ms 13.6MB 4980ms 3ms ruby/yjit 3.4.4