Haxe VS Go benchmarks

Current benchmark data was generated on Mon Feb 06 2023, 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 1880ms 26ms 146.2MB 2330ms 70ms haxe/cpp 4.2.5
go 1.go 3238ms 18ms 44.6MB 4600ms 63ms go 1.19.5
go 1.go 4368ms 14ms 39.4MB 4343ms 10ms tinygo 0.25.0
haxe 2.hx timeout 0.0ms 480.8MB 6600ms 247ms haxe/cpp 4.2.5
haxe 1.hx timeout 0.0ms 48.6MB 4707ms 277ms haxe/hl/c 4.2.5
haxe 2.hx timeout 0.0ms 83.0MB 4503ms 480ms haxe/hl/c 4.2.5
haxe 1.hx timeout 0.0ms 49.0MB 4733ms 250ms haxe/hl/jit 1.13.0
haxe 2.hx timeout 0.0ms 130.2MB 4497ms 480ms haxe/hl/jit 1.13.0

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
haxe 1.hx 126ms 3.3ms 27.7MB 117ms 3ms haxe/cpp 4.2.5
go 1.go 277ms 2.4ms 8.2MB 353ms 10ms go 1.19.5
go 1.go 391ms 3.0ms 6.6MB 383ms 0ms tinygo 0.25.0
haxe 2.hx 510ms 9.4ms 60.3MB 587ms 30ms haxe/cpp 4.2.5
haxe 1.hx 909ms 9.0ms 8.6MB 860ms 33ms haxe/hl/c 4.2.5
haxe 1.hx 1133ms 11ms 11.1MB 1077ms 37ms haxe/hl/jit 1.13.0
haxe 2.hx 1314ms 27ms 13.4MB 1213ms 83ms haxe/hl/c 4.2.5
haxe 2.hx 1509ms 8.7ms 25.0MB 1383ms 110ms haxe/hl/jit 1.13.0

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 3-m.go 209ms 0.6ms 2.9MB 373ms 0ms go 1.19.5
haxe 1.hx 3083ms 3.1ms 27.5MB 3050ms 247ms haxe/cpp 4.2.5
haxe 1.hx timeout 0.0ms 3.4MB 4683ms 300ms haxe/hl/c 4.2.5
haxe 1.hx timeout 0.0ms 3.8MB 4750ms 233ms haxe/hl/jit 1.13.0

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 3.go 29ms 1.6ms 2.9MB 33ms 0ms go 1.19.5
haxe 1.hx 328ms 3.5ms 27.5MB 300ms 33ms haxe/cpp 4.2.5
haxe 1.hx 769ms 1.0ms 3.3MB 710ms 43ms haxe/hl/c 4.2.5
haxe 1.hx 834ms 0.2ms 3.6MB 770ms 50ms haxe/hl/jit 1.13.0

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 2.2ms 0.5ms 2.0MB 0ms 0ms tinygo 0.25.0
go 1.go 2.6ms 0.2ms 3.3MB 0ms 0ms go 1.19.5
haxe 1.hx 2.7ms 0.7ms 2.4MB 0ms 0ms haxe/hl/c 4.2.5
haxe 1.hx 4.0ms 0.7ms 3.0MB 0ms 0ms haxe/hl/jit 1.13.0
haxe 1.hx 4.3ms 1.7ms 3.2MB 0ms 0ms haxe/cpp 4.2.5

lru

Input: 1000 1000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 3.go 161ms 1.4ms 0.3MB 150ms 0ms tinygo 0.25.0
go 3.go 168ms 1.8ms 2.9MB 160ms 0ms go 1.19.5
haxe 1.hx 189ms 2.3ms 22.3MB 177ms 3ms haxe/cpp 4.2.5
haxe 1.hx 209ms 5.8ms 2.8MB 197ms 0ms haxe/hl/c 4.2.5
haxe 1.hx 229ms 3.3ms 3.6MB 217ms 0ms haxe/hl/jit 1.13.0

Input: 1000 3000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 3.go 475ms 1.0ms 0.3MB 463ms 0ms tinygo 0.25.0
go 3.go 495ms 1.0ms 4.8MB 480ms 0ms go 1.19.5
haxe 1.hx 538ms 8.2ms 27.5MB 523ms 7ms haxe/cpp 4.2.5
haxe 1.hx 610ms 3.4ms 2.8MB 593ms 3ms haxe/hl/c 4.2.5
haxe 1.hx 674ms 13ms 3.7MB 660ms 0ms haxe/hl/jit 1.13.0

Input: 100 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 3.go 83ms 0.5ms 2.0MB 70ms 0ms tinygo 0.25.0
haxe 1.hx 86ms 0.6ms 14.1MB 73ms 0ms haxe/cpp 4.2.5
go 3.go 92ms 1.8ms 4.1MB 80ms 0ms go 1.19.5
haxe 1.hx 102ms 1.2ms 2.9MB 90ms 0ms haxe/hl/c 4.2.5
haxe 1.hx 113ms 0.6ms 3.6MB 100ms 0ms haxe/hl/jit 1.13.0

merkletrees

Input: 17

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
haxe 1.hx 1315ms 13ms 97.2MB 1570ms 50ms haxe/cpp 4.2.5
go 1.go 2223ms 27ms 40.1MB 3083ms 63ms go 1.19.5
go 2.go 2469ms 6.5ms 41.8MB 3500ms 63ms go 1.19.5
go 1.go 4230ms 3.2ms 212.7MB 4150ms 60ms tinygo 0.25.0
go 2.go timeout 0.0ms 68.9MB 4973ms 7ms tinygo 0.25.0
haxe 1.hx timeout 0.0ms 32.7MB 4650ms 333ms haxe/hl/c 4.2.5
haxe 1.hx timeout 0.0ms 54.0MB 4590ms 393ms haxe/hl/jit 1.13.0

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
haxe 1.hx 253ms 10ms 28.5MB 243ms 23ms haxe/cpp 4.2.5
go 1.go 474ms 6.1ms 12.5MB 633ms 20ms go 1.19.5
go 2.go 528ms 6.9ms 13.6MB 730ms 13ms go 1.19.5
go 1.go 732ms 1.3ms 52.2MB 703ms 7ms tinygo 0.25.0
go 2.go 1428ms 1.8ms 38.9MB 1403ms 3ms tinygo 0.25.0
haxe 1.hx 1659ms 4.1ms 10.9MB 1533ms 110ms haxe/hl/c 4.2.5
haxe 1.hx 1917ms 76ms 20.2MB 1800ms 103ms haxe/hl/jit 1.13.0

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 514ms 14ms 4.9MB 500ms 0ms go 1.19.5
go 1.go 705ms 0.8ms 0.0MB 697ms 0ms tinygo 0.25.0
haxe 2.hx 1107ms 28ms 2.3MB 1097ms 0ms haxe/hl/c 4.2.5
haxe 1.hx 1439ms 3.4ms 2.4MB 1427ms 0ms haxe/hl/c 4.2.5
haxe 3-m.hx 1482ms 19ms 27.6MB 2480ms 23ms haxe/cpp 4.2.5
haxe 2.hx 2488ms 69ms 3.3MB 2477ms 0ms haxe/hl/jit 1.13.0
haxe 1.hx 2618ms 43ms 3.2MB 2600ms 0ms haxe/hl/jit 1.13.0
haxe 1.hx timeout 0.0ms 3.2MB 4990ms 0ms haxe/cpp 4.2.5
haxe 2.hx timeout 0.0ms 3.3MB 4983ms 0ms haxe/cpp 4.2.5
haxe 3.hx timeout 0.0ms 3.3MB 4537ms 443ms haxe/hl/c 4.2.5
haxe 3.hx timeout 0.0ms 3.8MB 4630ms 350ms haxe/hl/jit 1.13.0

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 59ms 3.3ms 2.9MB 47ms 0ms go 1.19.5
go 1.go 73ms 0.5ms 0.0MB 63ms 0ms tinygo 0.25.0
haxe 2.hx 112ms 1.0ms 2.4MB 100ms 0ms haxe/hl/c 4.2.5
haxe 1.hx 147ms 1.1ms 2.4MB 140ms 0ms haxe/hl/c 4.2.5
haxe 3-m.hx 166ms 0.9ms 27.7MB 243ms 10ms haxe/cpp 4.2.5
haxe 2.hx 251ms 0.5ms 3.3MB 237ms 0ms haxe/hl/jit 1.13.0
haxe 1.hx 268ms 6.1ms 3.3MB 253ms 0ms haxe/hl/jit 1.13.0
haxe 3.hx 686ms 2.3ms 3.2MB 623ms 47ms haxe/hl/c 4.2.5
haxe 3.hx 824ms 11ms 3.7MB 763ms 43ms haxe/hl/jit 1.13.0
haxe 2.hx 865ms 7.0ms 3.2MB 853ms 0ms haxe/cpp 4.2.5
haxe 1.hx 1043ms 1.1ms 3.2MB 1030ms 0ms haxe/cpp 4.2.5

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 4-m.go 2235ms 18ms 5.4MB 4320ms 3ms go 1.19.5
go 1.go 4404ms 4.0ms 5.5MB 4393ms 3ms go 1.19.5
go 1.go timeout 0.0ms 0.4MB 4987ms 0ms tinygo 0.25.0
haxe 1.hx timeout 0.0ms 7.2MB 4987ms 0ms haxe/cpp 4.2.5
haxe 1.hx timeout 0.0ms 3.0MB 4990ms 0ms haxe/hl/c 4.2.5
haxe 1.hx timeout 0.0ms 3.7MB 4987ms 0ms haxe/hl/jit 1.13.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 4-m.go 577ms 7.0ms 2.9MB 1083ms 0ms go 1.19.5
go 1.go 1114ms 1.2ms 2.9MB 1103ms 0ms go 1.19.5
haxe 1.hx 1352ms 0.8ms 3.0MB 1340ms 0ms haxe/hl/c 4.2.5
haxe 1.hx 2172ms 0.6ms 6.6MB 2157ms 0ms haxe/cpp 4.2.5
go 1.go timeout 0.0ms 0.0MB 4983ms 0ms tinygo 0.25.0
haxe 1.hx timeout 0.0ms 3.6MB 4983ms 0ms haxe/hl/jit 1.13.0

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 4-m.go 152ms 2.2ms 2.9MB 270ms 0ms go 1.19.5
go 1.go 284ms 2.4ms 2.9MB 270ms 0ms go 1.19.5
haxe 1.hx 342ms 1.0ms 2.9MB 330ms 0ms haxe/hl/c 4.2.5
haxe 1.hx 548ms 1.0ms 5.4MB 533ms 0ms haxe/cpp 4.2.5
go 1.go 1642ms 4.7ms 0.0MB 1630ms 0ms tinygo 0.25.0
haxe 1.hx 2851ms 1.2ms 3.6MB 2840ms 0ms haxe/hl/jit 1.13.0