Zig VS Haxe benchmarks

Current benchmark data was generated on Wed May 25 2022, full log can be found HERE

CONTRIBUTIONS are WELCOME!

[x86_64][2 cores] Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz (Model 85)

* -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 2041ms 26ms 145.9MB 2597ms 83ms haxe/cpp 4.2.4
haxe 2.hx timeout 0.0ms 0.0MB 0ms 0ms haxe/cpp 4.2.4
haxe 1.hx timeout 0.0ms 0.0MB 0ms 0ms haxe/hl/c 4.2.4
haxe 2.hx timeout 0.0ms 0.0MB 0ms 0ms haxe/hl/c 4.2.4
haxe 1.hx timeout 0.0ms 0.0MB 0ms 0ms haxe/hl/jit 1.12.0
haxe 2.hx timeout 0.0ms 0.0MB 0ms 0ms haxe/hl/jit 1.12.0
zig 1.zig timeout 0.0ms 0.0MB 0ms 0ms zig 0.10.0

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
haxe 1.hx 136ms 1.9ms 27.5MB 143ms 13ms haxe/cpp 4.2.4
haxe 2.hx 558ms 7.7ms 60.3MB 723ms 27ms haxe/cpp 4.2.4
haxe 1.hx 882ms 3.1ms 7.8MB 847ms 20ms haxe/hl/c 4.2.4
haxe 1.hx 1145ms 6.0ms 11.1MB 1087ms 43ms haxe/hl/jit 1.12.0
haxe 2.hx 1473ms 23ms 13.5MB 1347ms 110ms haxe/hl/c 4.2.4
haxe 2.hx 1935ms 13ms 24.6MB 1740ms 177ms haxe/hl/jit 1.12.0
zig 1.zig 3757ms 23ms 8.0MB 3033ms 690ms zig 0.10.0

edigits

Input: 250001

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 1.zig timeout 0.0ms 0.0MB 0ms 0ms zig 0.10.0

Input: 100000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 1.zig 907ms 1.0ms 0.5MB 813ms 77ms zig 0.10.0

fannkuch-redux

Input: 11

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 2-m.zig 1127ms 11ms 0.0MB 2177ms 0ms zig 0.10.0
zig 2.zig 2403ms 4.4ms 0.0MB 2387ms 3ms zig 0.10.0
zig 1.zig 3174ms 228ms 0.1MB 3163ms 0ms zig 0.10.0

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 2-m.zig 99ms 0.3ms 0.0MB 170ms 0ms zig 0.10.0
zig 2.zig 197ms 14ms 0.0MB 183ms 0ms zig 0.10.0
zig 1.zig 269ms 8.6ms 0.1MB 257ms 0ms zig 0.10.0

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 1.zig 138ms 0.7ms 0.0MB 120ms 0ms zig 0.10.0
haxe 1.hx 3188ms 5.2ms 27.3MB 3350ms 217ms haxe/cpp 4.2.4
haxe 1.hx timeout 0.0ms 0.0MB 0ms 0ms haxe/hl/c 4.2.4
haxe 1.hx timeout 0.0ms 0.0MB 0ms 0ms haxe/hl/jit 1.12.0

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 1.zig 16ms 0.3ms 0.0MB 10ms 0ms zig 0.10.0
haxe 1.hx 342ms 5.8ms 27.4MB 333ms 27ms haxe/cpp 4.2.4
haxe 1.hx 801ms 47ms 3.4MB 730ms 53ms haxe/hl/c 4.2.4
haxe 1.hx 878ms 25ms 3.9MB 827ms 37ms haxe/hl/jit 1.12.0

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 1.zig 1.8ms 0.8ms 0.1MB 0ms 0ms zig 0.10.0
haxe 1.hx 2.9ms 1.0ms 2.6MB 0ms 0ms haxe/hl/c 4.2.4
haxe 1.hx 3.4ms 0.6ms 3.2MB 0ms 0ms haxe/cpp 4.2.4
haxe 1.hx 4.9ms 0.5ms 3.3MB 0ms 0ms haxe/hl/jit 1.12.0

lru

Input: 1000 1000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 1.zig 50ms 0.3ms 1.6MB 40ms 0ms zig 0.10.0
haxe 1.hx 191ms 0.8ms 22.2MB 173ms 7ms haxe/cpp 4.2.4
haxe 1.hx 212ms 1.2ms 2.9MB 197ms 0ms haxe/hl/c 4.2.4
haxe 1.hx 250ms 5.8ms 3.8MB 237ms 0ms haxe/hl/jit 1.12.0

Input: 1000 3000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 1.zig 145ms 2.9ms 1.6MB 133ms 0ms zig 0.10.0
haxe 1.hx 538ms 1.5ms 27.4MB 537ms 3ms haxe/cpp 4.2.4
haxe 1.hx 628ms 5.9ms 3.0MB 613ms 0ms haxe/hl/c 4.2.4
haxe 1.hx 735ms 13ms 3.6MB 717ms 3ms haxe/hl/jit 1.12.0

Input: 100 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 1.zig 24ms 0.2ms 0.0MB 10ms 0ms zig 0.10.0
haxe 1.hx 88ms 0.9ms 14.3MB 70ms 0ms haxe/cpp 4.2.4
haxe 1.hx 107ms 2.0ms 3.1MB 97ms 0ms haxe/hl/c 4.2.4
haxe 1.hx 121ms 0.5ms 3.7MB 107ms 0ms haxe/hl/jit 1.12.0

mandelbrot

Input: 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 1.zig 349ms 20ms 3.1MB 337ms 0ms zig 0.10.0

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 1.zig 17ms 1.0ms 0.0MB 10ms 0ms zig 0.10.0

merkletrees

Input: 17

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
haxe 1.hx 1430ms 9.8ms 96.9MB 1727ms 50ms haxe/cpp 4.2.4
haxe 1.hx timeout 0.0ms 0.0MB 0ms 0ms haxe/hl/c 4.2.4
haxe 1.hx timeout 0.0ms 0.0MB 0ms 0ms haxe/hl/jit 1.12.0
zig 1.zig timeout 0.0ms 0.0MB 0ms 0ms zig 0.10.0

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
haxe 1.hx 278ms 1.5ms 28.6MB 293ms 20ms haxe/cpp 4.2.4
haxe 1.hx 1810ms 21ms 15.4MB 1697ms 97ms haxe/hl/c 4.2.4
haxe 1.hx 2241ms 26ms 20.3MB 2077ms 147ms haxe/hl/jit 1.12.0
zig 1.zig timeout 0.0ms 0.0MB 0ms 0ms zig 0.10.0

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 2.zig 255ms 2.2ms 0.0MB 240ms 0ms zig 0.10.0
zig 1.zig 383ms 3.0ms 0.0MB 370ms 0ms zig 0.10.0
haxe 2.hx 1084ms 15ms 2.6MB 1070ms 0ms haxe/hl/c 4.2.4
haxe 1.hx 1466ms 63ms 2.6MB 1457ms 0ms haxe/hl/c 4.2.4
haxe 3.hx 2205ms 13ms 27.6MB 2720ms 47ms haxe/cpp 4.2.4
haxe 2.hx 2526ms 63ms 3.3MB 2510ms 0ms haxe/hl/jit 1.12.0
haxe 1.hx 2756ms 36ms 3.3MB 2747ms 0ms haxe/hl/jit 1.12.0
haxe 1.hx timeout 0.0ms 0.0MB 0ms 0ms haxe/cpp 4.2.4
haxe 2.hx timeout 0.0ms 0.0MB 0ms 0ms haxe/cpp 4.2.4
haxe 3.hx timeout 0.0ms 0.0MB 0ms 0ms haxe/hl/c 4.2.4
haxe 3.hx timeout 0.0ms 0.0MB 0ms 0ms haxe/hl/jit 1.12.0

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 2.zig 29ms 2.9ms 0.0MB 20ms 0ms zig 0.10.0
zig 1.zig 41ms 1.0ms 0.0MB 30ms 0ms zig 0.10.0
haxe 2.hx 113ms 2.1ms 2.6MB 100ms 0ms haxe/hl/c 4.2.4
haxe 1.hx 147ms 0.3ms 2.6MB 140ms 0ms haxe/hl/c 4.2.4
haxe 3.hx 238ms 1.3ms 25.6MB 267ms 10ms haxe/cpp 4.2.4
haxe 2.hx 255ms 0.7ms 3.4MB 243ms 0ms haxe/hl/jit 1.12.0
haxe 1.hx 270ms 2.8ms 3.3MB 260ms 0ms haxe/hl/jit 1.12.0
haxe 3.hx 764ms 6.9ms 3.2MB 677ms 73ms haxe/hl/c 4.2.4
haxe 2.hx 832ms 0.4ms 4.4MB 820ms 0ms haxe/cpp 4.2.4
haxe 3.hx 909ms 4.6ms 3.9MB 833ms 53ms haxe/hl/jit 1.12.0
haxe 1.hx 1075ms 3.8ms 3.1MB 1063ms 0ms haxe/cpp 4.2.4

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 2.zig 378ms 1.9ms 4.9MB 367ms 0ms zig 0.10.0
zig 1.zig 1136ms 42ms 39.1MB 1107ms 13ms zig 0.10.0

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 2.zig 82ms 4.7ms 1.1MB 70ms 0ms zig 0.10.0
zig 1.zig 119ms 7.8ms 9.6MB 103ms 0ms zig 0.10.0

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 1.zig timeout 0.0ms 0.0MB 0ms 0ms zig 0.10.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 1.zig 2845ms 10ms 0.4MB 1060ms 1770ms zig 0.10.0

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 2-m.zig 893ms 1.7ms 0.3MB 1660ms 0ms zig 0.10.0
zig 2.zig 1660ms 114ms 0.0MB 1650ms 0ms zig 0.10.0
zig 1.zig 3381ms 16ms 0.1MB 3370ms 0ms zig 0.10.0
haxe 1.hx timeout 0.0ms 0.0MB 0ms 0ms haxe/cpp 4.2.4
haxe 1.hx timeout 0.0ms 0.0MB 0ms 0ms haxe/hl/c 4.2.4
haxe 1.hx timeout 0.0ms 0.0MB 0ms 0ms haxe/hl/jit 1.12.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 2-m.zig 230ms 1.2ms 0.2MB 410ms 0ms zig 0.10.0
zig 2.zig 420ms 28ms 0.0MB 413ms 0ms zig 0.10.0
zig 1.zig 850ms 1.6ms 0.1MB 840ms 0ms zig 0.10.0
haxe 1.hx 1821ms 122ms 6.5MB 1803ms 0ms haxe/cpp 4.2.4
haxe 1.hx 1950ms 1.0ms 3.3MB 1940ms 0ms haxe/hl/c 4.2.4
haxe 1.hx timeout 0.0ms 0.0MB 0ms 0ms haxe/hl/jit 1.12.0

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 2-m.zig 65ms 2.2ms 0.2MB 93ms 0ms zig 0.10.0
zig 2.zig 100ms 0.4ms 0.0MB 90ms 0ms zig 0.10.0
zig 1.zig 226ms 22ms 0.1MB 213ms 0ms zig 0.10.0
haxe 1.hx 493ms 2.0ms 2.9MB 480ms 0ms haxe/hl/c 4.2.4
haxe 1.hx 495ms 0.1ms 5.2MB 480ms 0ms haxe/cpp 4.2.4
haxe 1.hx 2849ms 0.5ms 3.9MB 2833ms 0ms haxe/hl/jit 1.12.0