Haxe VS Java 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
java 2.java 463ms 0.8ms 576.3MB 547ms 97ms openjdk 21
java 2-m.java 465ms 3.0ms 643.3MB 647ms 120ms graal/jvm 17.0.8
java 2.java 474ms 2.2ms 624.4MB 590ms 93ms openjdk 23
java 2.java 1249ms 22ms 1096.2MB 580ms 837ms openjdk/zgc 21
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
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

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
java 2.java 126ms 3.1ms 167.2MB 157ms 30ms openjdk 21
java 2-m.java 128ms 4.5ms 98.8MB 163ms 30ms openjdk 23
java 2-m.java 149ms 6.5ms 224.4MB 223ms 57ms graal/jvm 17.0.8
java 2.java 313ms 5.1ms 241.8MB 160ms 210ms openjdk/zgc 21
haxe 2.hx 397ms 9.3ms 58.3MB 420ms 27ms haxe/cpp 4.3.6
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
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
java 4-m.java 447ms 11ms 101.5MB 637ms 40ms graal/jvm 17.0.8
java 4.java 460ms 1.3ms 49.2MB 550ms 20ms openjdk 23
java 4.java 461ms 3.8ms 47.6MB 547ms 20ms openjdk 21
java 4.java 578ms 7.4ms 45.3MB 540ms 147ms openjdk/zgc 21
haxe 1.hx 2398ms 8.9ms 25.6MB 2283ms 227ms haxe/cpp 4.3.6
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
java 4-m.java 128ms 4.4ms 93.9MB 177ms 40ms graal/jvm 17.0.8
java 4.java 128ms 3.4ms 46.2MB 167ms 20ms openjdk 21
java 4.java 129ms 1.5ms 48.3MB 170ms 20ms openjdk 23
java 4.java 249ms 1.9ms 43.7MB 170ms 140ms openjdk/zgc 21
haxe 1.hx 256ms 2.4ms 25.6MB 223ms 27ms haxe/cpp 4.3.6
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

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
java 1.java 64ms 1.4ms 52.8MB 66ms 20ms graal/jvm 17.0.8
java 1.java 68ms 2.2ms 43.7MB 78ms 18ms openjdk 21
java 1.java 73ms 6.0ms 44.7MB 76ms 18ms openjdk 23
java 1.java 195ms 5.0ms 43.0MB 86ms 138ms openjdk/zgc 21

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

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

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

merkletrees

Input: 17

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 403ms 6.5ms 679.3MB 460ms 100ms openjdk 21
java 1.java 404ms 6.2ms 543.6MB 507ms 87ms openjdk 23
java 1-m.java 415ms 10ms 628.4MB 613ms 107ms graal/jvm 17.0.8
haxe 1.hx 898ms 3.0ms 95.0MB 997ms 47ms haxe/cpp 4.3.6
java 1.java 1081ms 7.3ms 969.4MB 447ms 757ms openjdk/zgc 21
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

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
java 1-m.java 168ms 0.6ms 158.6MB 250ms 40ms openjdk 23
java 1-m.java 170ms 0.4ms 206.2MB 240ms 50ms openjdk 21
java 1-m.java 218ms 17ms 253.4MB 360ms 60ms graal/jvm 17.0.8
java 1.java 426ms 21ms 342.0MB 217ms 290ms openjdk/zgc 21
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

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 1.java 448ms 1.9ms 45.3MB 487ms 20ms openjdk 21
java 1.java 448ms 1.6ms 48.3MB 480ms 20ms openjdk 23
java 1.java 449ms 6.6ms 81.5MB 477ms 30ms graal/jvm 17.0.8
java 1.java 566ms 4.0ms 44.5MB 483ms 137ms openjdk/zgc 21
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
java 2.java 1270ms 4.1ms 792.6MB 1393ms 103ms openjdk 23
java 2.java 1288ms 52ms 595.9MB 1420ms 83ms openjdk 21
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
java 2.java 3257ms 134ms 2431.0MB 1623ms 1843ms openjdk/zgc 21
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

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
java 1-m.java 119ms 1.7ms 81.7MB 147ms 33ms graal/jvm 17.0.8
java 1.java 121ms 1.4ms 45.2MB 160ms 20ms openjdk 21
java 1.java 124ms 7.2ms 48.2MB 160ms 20ms openjdk 23
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
java 1.java 248ms 4.1ms 44.9MB 170ms 140ms openjdk/zgc 21
haxe 1.hx 253ms 3.5ms 3.6MB 243ms 0ms haxe/hl/jit 1.15.0
java 2-m.java 301ms 9.8ms 387.1MB 443ms 53ms openjdk 21
java 2-m.java 314ms 3.1ms 416.0MB 453ms 70ms openjdk 23
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
java 2.java 692ms 5.9ms 525.1MB 467ms 410ms openjdk/zgc 21
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

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 2-m.java 1997ms 10ms 47.8MB 7620ms 23ms openjdk 21
java 2-m.java 2004ms 6.8ms 48.5MB 7647ms 23ms openjdk 23
java 2-m.java 2106ms 19ms 45.5MB 7530ms 147ms openjdk/zgc 21
java 2-m.java 2510ms 37ms 95.1MB 9387ms 50ms graal/jvm 17.0.8
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

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 2-m.java 608ms 11ms 49.1MB 2147ms 23ms openjdk 23
java 2-m.java 610ms 7.9ms 47.8MB 2153ms 23ms openjdk 21
java 2-m.java 729ms 4.6ms 45.4MB 2143ms 150ms openjdk/zgc 21
java 2-m.java 762ms 11ms 93.2MB 2673ms 43ms graal/jvm 17.0.8
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
haxe 1.hx timeout 0.0ms 3.8MB 4987ms 0ms haxe/hl/jit 1.15.0

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
java 2-m.java 253ms 8.5ms 48.1MB 743ms 23ms openjdk 21
haxe 1.hx 255ms 2.7ms 3.1MB 243ms 0ms haxe/hl/c 4.3.6
java 2-m.java 267ms 10ms 48.9MB 800ms 27ms openjdk 23
java 2-m.java 298ms 25ms 94.0MB 890ms 37ms graal/jvm 17.0.8
java 2-m.java 383ms 1.6ms 45.6MB 763ms 147ms openjdk/zgc 21
haxe 1.hx 605ms 0.7ms 5.3MB 593ms 0ms haxe/cpp 4.3.6
haxe 1.hx 2312ms 0.5ms 3.6MB 2300ms 0ms haxe/hl/jit 1.15.0