Haxe VS Python 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
python 1.py 2447ms 34ms 217.6MB 2300ms 130ms pypy 3.9.16
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
python 1.py timeout 0.0ms 40.8MB 4957ms 23ms cpython 3.11.1
python 1.py timeout 0.0ms 40.4MB 4933ms 47ms pyston 3.8.12

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
python 1.py 162ms 21ms 74.4MB 110ms 23ms pypy 3.9.16
haxe 2.hx 510ms 9.4ms 60.3MB 587ms 30ms haxe/cpp 4.2.5
python 1.py 674ms 6.1ms 12.0MB 653ms 7ms pyston 3.8.12
haxe 1.hx 909ms 9.0ms 8.6MB 860ms 33ms haxe/hl/c 4.2.5
python 1.py 989ms 5.6ms 12.5MB 970ms 7ms cpython 3.11.1
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
haxe 1.hx 3083ms 3.1ms 27.5MB 3050ms 247ms haxe/cpp 4.2.5
python 5-m.py 3396ms 47ms 12.7MB 4827ms 1273ms pyston 3.8.12
python 1.py 3472ms 22ms 85.0MB 3427ms 23ms pypy 3.9.16
python 1.py 3936ms 36ms 7.9MB 3923ms 0ms pyston 3.8.12
python 5-m.py 4001ms 4.4ms 13.6MB 5693ms 1197ms cpython 3.11.1
python 5-m.py 4662ms 42ms 76.1MB 6713ms 1320ms pypy 3.9.16
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
python 1.py timeout 0.0ms 8.6MB 4980ms 0ms cpython 3.11.1

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
haxe 1.hx 328ms 3.5ms 27.5MB 300ms 33ms haxe/cpp 4.2.5
python 1.py 407ms 1.7ms 8.0MB 390ms 3ms pyston 3.8.12
python 1.py 433ms 0.6ms 73.8MB 407ms 13ms pypy 3.9.16
python 5-m.py 436ms 14ms 12.6MB 557ms 160ms pyston 3.8.12
python 5-m.py 485ms 5.8ms 13.6MB 587ms 193ms cpython 3.11.1
python 1.py 594ms 1.0ms 8.6MB 580ms 0ms cpython 3.11.1
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
python 5-m.py 845ms 3.6ms 76.2MB 923ms 457ms pypy 3.9.16

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
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
python 1.py 14ms 0.9ms 8.4MB 10ms 0ms cpython 3.11.1
python 1.py 14ms 0.7ms 7.3MB 10ms 0ms pyston 3.8.12
python 1.py 37ms 0.6ms 51.6MB 8ms 14ms pypy 3.9.16

lru

Input: 1000 1000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
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
python 2.py 232ms 1.2ms 70.9MB 200ms 10ms pypy 3.9.16
python 1.py 284ms 6.6ms 71.9MB 240ms 23ms pypy 3.9.16
python 1.py 934ms 3.2ms 9.1MB 923ms 0ms pyston 3.8.12
python 2.py 1077ms 7.0ms 8.7MB 1063ms 0ms pyston 3.8.12
python 1.py 1255ms 16ms 9.3MB 1243ms 0ms cpython 3.11.1
python 2.py 1427ms 8.5ms 9.1MB 1410ms 0ms cpython 3.11.1

Input: 1000 3000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
haxe 1.hx 538ms 8.2ms 27.5MB 523ms 7ms haxe/cpp 4.2.5
python 2.py 557ms 5.6ms 71.3MB 520ms 23ms pypy 3.9.16
haxe 1.hx 610ms 3.4ms 2.8MB 593ms 3ms haxe/hl/c 4.2.5
python 1.py 616ms 1.8ms 72.5MB 580ms 20ms pypy 3.9.16
haxe 1.hx 674ms 13ms 3.7MB 660ms 0ms haxe/hl/jit 1.13.0
python 1.py 2744ms 8.5ms 9.1MB 2723ms 0ms pyston 3.8.12
python 2.py 3201ms 18ms 8.7MB 3183ms 3ms pyston 3.8.12
python 1.py 3733ms 77ms 9.3MB 3717ms 0ms cpython 3.11.1
python 2.py 4232ms 26ms 9.1MB 4217ms 0ms cpython 3.11.1

Input: 100 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
haxe 1.hx 86ms 0.6ms 14.1MB 73ms 0ms haxe/cpp 4.2.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
python 2.py 161ms 0.9ms 71.3MB 130ms 10ms pypy 3.9.16
python 1.py 187ms 2.1ms 72.3MB 157ms 17ms pypy 3.9.16
python 1.py 454ms 2.7ms 8.8MB 440ms 0ms pyston 3.8.12
python 2.py 501ms 1.5ms 8.2MB 487ms 0ms pyston 3.8.12
python 1.py 597ms 4.0ms 8.7MB 577ms 3ms cpython 3.11.1
python 2.py 709ms 5.6ms 8.4MB 693ms 0ms cpython 3.11.1

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
python 1.py 2938ms 261ms 230.3MB 2777ms 143ms pypy 3.9.16
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
python 1.py timeout 0.0ms 92.9MB 4947ms 33ms cpython 3.11.1
python 1.py timeout 0.0ms 130.2MB 4930ms 50ms pyston 3.8.12

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
python 1.py 482ms 20ms 149.6MB 410ms 53ms pypy 3.9.16
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
python 1.py timeout 0.0ms 36.9MB 4967ms 13ms cpython 3.11.1
python 1.py timeout 0.0ms 41.5MB 4963ms 17ms pyston 3.8.12

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
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
python 2.py 2170ms 15ms 71.1MB 2137ms 17ms pypy 3.9.16
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
python 1.py 3646ms 10ms 70.2MB 3617ms 7ms pypy 3.9.16
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
python 1.py timeout 0.0ms 8.5MB 4987ms 0ms cpython 3.11.1
python 2.py timeout 0.0ms 8.6MB 4980ms 3ms cpython 3.11.1
python 1.py timeout 0.0ms 8.5MB 4990ms 0ms pyston 3.8.12
python 2.py timeout 0.0ms 8.0MB 4983ms 0ms pyston 3.8.12

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
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
python 2.py 267ms 1.3ms 70.9MB 233ms 17ms pypy 3.9.16
haxe 1.hx 268ms 6.1ms 3.3MB 253ms 0ms haxe/hl/jit 1.13.0
python 1.py 416ms 2.4ms 70.4MB 380ms 17ms pypy 3.9.16
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
python 1.py 1163ms 10ms 8.4MB 1150ms 0ms pyston 3.8.12
python 2.py 1601ms 24ms 7.9MB 1587ms 0ms pyston 3.8.12
python 1.py 3147ms 98ms 8.5MB 3133ms 0ms cpython 3.11.1
python 2.py 3709ms 215ms 8.6MB 3697ms 0ms cpython 3.11.1

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
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
python 8.py timeout 0.0ms 16.5MB 53ms 13ms cpython 3.11.1
python 8.py timeout 0.0ms 100.3MB 660ms 83ms pypy 3.9.16
python 8.py timeout 0.0ms 17.8MB 77ms 13ms pyston 3.8.12

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
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
haxe 1.hx timeout 0.0ms 3.6MB 4983ms 0ms haxe/hl/jit 1.13.0
python 8.py timeout 0.0ms 16.3MB 100ms 17ms cpython 3.11.1
python 8.py timeout 0.0ms 111.3MB 1097ms 220ms pypy 3.9.16
python 8.py timeout 0.0ms 17.2MB 160ms 30ms pyston 3.8.12

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
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
haxe 1.hx 2851ms 1.2ms 3.6MB 2840ms 0ms haxe/hl/jit 1.13.0
python 8-m.py 3809ms 23ms 104.7MB 6577ms 407ms pypy 3.9.16
python 8.py timeout 0.0ms 15.8MB 277ms 47ms cpython 3.11.1
python 8.py timeout 0.0ms 16.8MB 297ms 63ms pyston 3.8.12