Haxe VS Javascript 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.)

binarytrees

Input: 18

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1-m.js 934ms 12ms 179.4MB 1463ms 247ms bun 1.1.38
javascript 1-m.js 1245ms 11ms 292.8MB 2167ms 173ms node 23.3.0
haxe 1.hx 1329ms 25ms 145.7MB 1547ms 63ms haxe/cpp 4.3.6
haxe 2.hx 4475ms 79ms 497.1MB 5153ms 213ms haxe/cpp 4.3.6
haxe 1.hx timeout 0.0ms 50.6MB 5560ms 417ms haxe/hl/c 4.3.6
haxe 2.hx timeout 0.0ms 85.0MB 5067ms 693ms haxe/hl/c 4.3.6
haxe 1.hx timeout 0.0ms 52.4MB 7860ms 440ms haxe/hl/jit 1.14.0
haxe 2.hx timeout 0.0ms 132.9MB 7410ms 773ms haxe/hl/jit 1.14.0

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
haxe 1.hx 93ms 1.2ms 27.6MB 90ms 7ms haxe/cpp 4.3.6
javascript 1.js 95ms 0.9ms 78.8MB 67ms 30ms bun 1.1.38
javascript 1.js 124ms 1.3ms 82.1MB 123ms 20ms node 23.3.0
haxe 2.hx 405ms 19ms 60.3MB 440ms 27ms haxe/cpp 4.3.6
haxe 1.hx 637ms 9.9ms 10.7MB 600ms 57ms haxe/hl/c 4.3.6
haxe 1.hx 673ms 7.3ms 13.4MB 730ms 57ms haxe/hl/jit 1.14.0
haxe 2.hx 925ms 7.0ms 15.5MB 787ms 183ms haxe/hl/c 4.3.6
haxe 2.hx 1253ms 56ms 27.2MB 1317ms 183ms haxe/hl/jit 1.14.0

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
haxe 1.hx 2465ms 27ms 27.4MB 2353ms 250ms haxe/cpp 4.3.6
haxe 1.hx timeout 0.0ms 5.4MB 4233ms 970ms haxe/hl/c 4.3.6
haxe 1.hx timeout 0.0ms 5.7MB 4290ms 933ms haxe/hl/jit 1.14.0

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
haxe 1.hx 261ms 3.2ms 27.6MB 223ms 37ms haxe/cpp 4.3.6
haxe 1.hx 652ms 1.7ms 5.4MB 547ms 120ms haxe/hl/c 4.3.6
haxe 1.hx 693ms 3.7ms 5.7MB 593ms 120ms haxe/hl/jit 1.14.0

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
haxe 1.hx 2.2ms 0.3ms 4.7MB 0ms 0ms haxe/hl/c 4.3.6
haxe 1.hx 2.3ms 0.2ms 4.4MB 0ms 0ms haxe/cpp 4.3.6
haxe 1.hx 4.1ms 0.3ms 4.7MB 0ms 0ms haxe/hl/jit 1.14.0
javascript 1.js 12ms 0.4ms 31.8MB 0ms 10ms bun 1.1.38
javascript 1.js 31ms 0.3ms 51.9MB 16ms 4ms node 23.3.0

lru

Input: 1000 1000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
haxe 1.hx 135ms 3.7ms 20.4MB 123ms 3ms haxe/cpp 4.3.6
haxe 1.hx 136ms 1.5ms 5.0MB 130ms 0ms haxe/hl/c 4.3.6
haxe 1.hx 159ms 3.9ms 5.8MB 143ms 3ms haxe/hl/jit 1.14.0
javascript 2.js 307ms 1.5ms 66.6MB 293ms 17ms node 23.3.0
javascript 1.js 556ms 4.1ms 64.6MB 543ms 7ms node 23.3.0
javascript 2.js 654ms 2.5ms 122.6MB 690ms 73ms bun 1.1.38
javascript 1.js 879ms 2.7ms 110.8MB 957ms 87ms bun 1.1.38

Input: 1000 3000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
haxe 1.hx 378ms 2.7ms 25.5MB 360ms 7ms haxe/cpp 4.3.6
haxe 1.hx 396ms 2.4ms 5.1MB 383ms 0ms haxe/hl/c 4.3.6
haxe 1.hx 458ms 2.3ms 5.8MB 447ms 3ms haxe/hl/jit 1.14.0
javascript 2.js 850ms 3.9ms 71.8MB 830ms 23ms node 23.3.0
javascript 1.js 1581ms 2.8ms 71.0MB 1560ms 17ms node 23.3.0
javascript 2.js 1821ms 23ms 122.0MB 1977ms 60ms bun 1.1.38
javascript 1.js 2555ms 37ms 110.8MB 2857ms 143ms bun 1.1.38

Input: 100 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
haxe 1.hx 62ms 0.1ms 12.4MB 50ms 0ms haxe/cpp 4.3.6
haxe 1.hx 67ms 0.4ms 5.0MB 60ms 0ms haxe/hl/c 4.3.6
haxe 1.hx 79ms 0.1ms 5.7MB 67ms 0ms haxe/hl/jit 1.14.0
javascript 2.js 166ms 2.5ms 60.1MB 163ms 3ms node 23.3.0
javascript 1.js 172ms 16ms 61.8MB 157ms 10ms node 23.3.0
javascript 1.js 323ms 4.0ms 119.0MB 360ms 73ms bun 1.1.38
javascript 2.js 352ms 4.1ms 125.4MB 380ms 47ms bun 1.1.38

merkletrees

Input: 17

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1-m.js 510ms 1.8ms 138.7MB 657ms 147ms bun 1.1.38
javascript 1.js 538ms 0.3ms 134.0MB 627ms 60ms node 23.3.0
haxe 1.hx 926ms 34ms 96.9MB 1033ms 43ms haxe/cpp 4.3.6
haxe 1.hx timeout 0.0ms 34.5MB 4910ms 500ms haxe/hl/c 4.3.6
haxe 1.hx timeout 0.0ms 57.0MB 5923ms 507ms haxe/hl/jit 1.14.0

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 124ms 3.0ms 86.3MB 103ms 37ms bun 1.1.38
javascript 1.js 162ms 1.2ms 101.8MB 160ms 37ms node 23.3.0
haxe 1.hx 173ms 2.0ms 28.6MB 173ms 7ms haxe/cpp 4.3.6
haxe 1.hx 1302ms 9.8ms 12.7MB 1247ms 133ms haxe/hl/c 4.3.6
haxe 1.hx 1487ms 13ms 22.3MB 1537ms 123ms haxe/hl/jit 1.14.0

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 6.js 460ms 5.9ms 59.6MB 447ms 7ms node 23.3.0
javascript 6.js 672ms 15ms 44.9MB 667ms 3ms bun 1.1.38
haxe 2.hx 867ms 20ms 5.1MB 860ms 0ms haxe/hl/c 4.3.6
haxe 1.hx 1053ms 7.5ms 5.0MB 1040ms 0ms haxe/hl/c 4.3.6
haxe 3.hx 1390ms 21ms 25.6MB 1597ms 40ms haxe/cpp 4.3.6
haxe 2.hx 2402ms 3.1ms 5.7MB 2387ms 0ms haxe/hl/jit 1.14.0
haxe 1.hx 2451ms 7.8ms 5.7MB 2433ms 0ms haxe/hl/jit 1.14.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 5.2MB 3863ms 1640ms haxe/hl/c 4.3.6
haxe 3.hx timeout 0.0ms 5.9MB 4157ms 1303ms haxe/hl/jit 1.14.0

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 6.js 77ms 1.7ms 59.5MB 67ms 3ms node 23.3.0
javascript 6.js 87ms 1.8ms 44.9MB 80ms 10ms bun 1.1.38
haxe 2.hx 89ms 2.0ms 5.0MB 80ms 0ms haxe/hl/c 4.3.6
haxe 1.hx 110ms 3.1ms 5.0MB 100ms 0ms haxe/hl/c 4.3.6
haxe 3.hx 158ms 1.7ms 25.6MB 163ms 7ms haxe/cpp 4.3.6
haxe 2.hx 250ms 2.1ms 5.7MB 240ms 0ms haxe/hl/jit 1.14.0
haxe 1.hx 250ms 1.7ms 5.7MB 237ms 0ms haxe/hl/jit 1.14.0
haxe 3.hx 665ms 0.8ms 5.1MB 527ms 193ms haxe/hl/c 4.3.6
haxe 2.hx 671ms 3.3ms 4.4MB 657ms 0ms haxe/cpp 4.3.6
haxe 3.hx 773ms 2.5ms 5.8MB 633ms 197ms haxe/hl/jit 1.14.0
haxe 1.hx 807ms 5.6ms 4.4MB 797ms 0ms haxe/cpp 4.3.6

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 6-m.js 2167ms 20ms 117.7MB 8173ms 63ms node 23.3.0
haxe 1.hx 3912ms 9.7ms 5.2MB 3900ms 0ms haxe/hl/c 4.3.6
haxe 1.hx timeout 0.0ms 6.9MB 4980ms 3ms haxe/cpp 4.3.6
haxe 1.hx timeout 0.0ms 5.8MB 4983ms 0ms haxe/hl/jit 1.14.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 6-m.js 643ms 4.2ms 117.0MB 2300ms 43ms node 23.3.0
haxe 1.hx 986ms 2.8ms 5.1MB 973ms 0ms haxe/hl/c 4.3.6
haxe 1.hx 2391ms 1.0ms 6.6MB 2377ms 0ms haxe/cpp 4.3.6
haxe 1.hx timeout 0.0ms 5.8MB 4980ms 7ms haxe/hl/jit 1.14.0

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
haxe 1.hx 251ms 2.6ms 5.0MB 243ms 0ms haxe/hl/c 4.3.6
javascript 6-m.js 262ms 0.7ms 112.9MB 813ms 47ms node 23.3.0
haxe 1.hx 600ms 0.8ms 5.4MB 583ms 0ms haxe/cpp 4.3.6
haxe 1.hx 2304ms 7.8ms 5.7MB 2287ms 0ms haxe/hl/jit 1.14.0