Zig VS Javascript benchmarks

Current benchmark data was generated on Wed Sep 28 2022, full log can be found HERE

CONTRIBUTIONS are WELCOME!

[x86_64][2 cores] Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz (Model 106)

* -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.js 1230ms 0.8ms 249.0MB 1550ms 60ms bun 0.1.13
zig 1.zig 2187ms 28ms 49.2MB 2163ms 10ms zig 0.10.0-dev.4192+c75e8f361
javascript 1.js 3018ms 733ms 359.6MB 2540ms 863ms node 18.9.1

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 113ms 2.0ms 104.4MB 103ms 13ms bun 0.1.13
zig 1.zig 175ms 1.6ms 7.1MB 160ms 0ms zig 0.10.0-dev.4192+c75e8f361
javascript 1.js 197ms 0.8ms 84.0MB 183ms 23ms node 18.9.1

edigits

Input: 250001

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 1.zig 3832ms 0.3ms 2.7MB 3803ms 10ms zig 0.10.0-dev.4192+c75e8f361

Input: 100000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 1.zig 636ms 0.8ms 2.1MB 613ms 7ms zig 0.10.0-dev.4192+c75e8f361

fannkuch-redux

Input: 11

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 2-m.zig 1322ms 13ms 0.7MB 2567ms 0ms zig 0.10.0-dev.4192+c75e8f361
zig 3-i.zig 1564ms 3.3ms 0.6MB 1550ms 0ms zig 0.10.0-dev.4192+c75e8f361
zig 2.zig 2504ms 1.6ms 0.6MB 2490ms 0ms zig 0.10.0-dev.4192+c75e8f361
zig 1.zig 3429ms 4.8ms 0.6MB 3413ms 0ms zig 0.10.0-dev.4192+c75e8f361

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 2-m.zig 124ms 1.5ms 2.6MB 217ms 0ms zig 0.10.0-dev.4192+c75e8f361
zig 3-i.zig 132ms 0.5ms 0.6MB 120ms 0ms zig 0.10.0-dev.4192+c75e8f361
zig 2.zig 213ms 0.2ms 0.6MB 200ms 0ms zig 0.10.0-dev.4192+c75e8f361
zig 1.zig 285ms 1.2ms 0.6MB 273ms 0ms zig 0.10.0-dev.4192+c75e8f361

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 1.zig 155ms 0.3ms 0.6MB 147ms 0ms zig 0.10.0-dev.4192+c75e8f361

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 1.zig 18ms 0.5ms 0.6MB 10ms 0ms zig 0.10.0-dev.4192+c75e8f361

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 1.zig 1.4ms 0.1ms 0.6MB 0ms 0ms zig 0.10.0-dev.4192+c75e8f361
javascript 1.js 15ms 0.4ms 50.6MB 0ms 0ms bun 0.1.13
javascript 1.js 55ms 0.4ms 41.9MB 38ms 4ms node 18.9.1

json-serde

Input: sample 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 1.zig 113ms 0.7ms 12.6MB 100ms 0ms zig 0.10.0-dev.4192+c75e8f361
javascript 1.js 168ms 0.5ms 72.2MB 140ms 20ms node 18.9.1
javascript 1.js 329ms 9.1ms 270.1MB 360ms 53ms bun 0.1.13

Input: canada 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 1.zig 711ms 5.5ms 79.3MB 650ms 43ms zig 0.10.0-dev.4192+c75e8f361
javascript 1.js 1085ms 1.5ms 284.9MB 1087ms 113ms node 18.9.1
javascript 1.js 2108ms 35ms 1235.4MB 1987ms 360ms bun 0.1.13

knucleotide

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 1.zig 1234ms 8.1ms 22.0MB 1207ms 13ms zig 0.10.0-dev.4192+c75e8f361

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 1.zig 138ms 1.0ms 9.2MB 123ms 0ms zig 0.10.0-dev.4192+c75e8f361

lru

Input: 1000 1000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 1.zig 45ms 1.2ms 2.9MB 30ms 0ms zig 0.10.0-dev.4192+c75e8f361
javascript 2.js 520ms 1.4ms 103.6MB 530ms 10ms bun 0.1.13
javascript 1.js 553ms 3.5ms 138.9MB 550ms 23ms bun 0.1.13
javascript 2.js 793ms 2.4ms 60.7MB 783ms 0ms node 18.9.1
javascript 1.js 1144ms 2.1ms 61.2MB 1123ms 10ms node 18.9.1

Input: 1000 3000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 1.zig 126ms 0.6ms 2.8MB 113ms 0ms zig 0.10.0-dev.4192+c75e8f361
javascript 2.js 1498ms 8.1ms 103.7MB 1510ms 17ms bun 0.1.13
javascript 1.js 1577ms 10ms 166.8MB 1607ms 30ms bun 0.1.13
javascript 2.js 2217ms 24ms 62.5MB 2197ms 13ms node 18.9.1
javascript 1.js 3272ms 13ms 61.3MB 3257ms 3ms node 18.9.1

Input: 100 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 1.zig 21ms 1.4ms 1.6MB 10ms 0ms zig 0.10.0-dev.4192+c75e8f361
javascript 2.js 268ms 1.4ms 97.0MB 263ms 13ms bun 0.1.13
javascript 1.js 284ms 1.6ms 119.2MB 273ms 20ms bun 0.1.13
javascript 2.js 410ms 2.2ms 52.1MB 393ms 10ms node 18.9.1
javascript 1.js 445ms 1.5ms 49.3MB 423ms 10ms node 18.9.1

mandelbrot

Input: 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 1.zig 424ms 0.6ms 4.3MB 410ms 0ms zig 0.10.0-dev.4192+c75e8f361

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 1.zig 21ms 1.2ms 0.6MB 10ms 0ms zig 0.10.0-dev.4192+c75e8f361

merkletrees

Input: 17

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 736ms 0.2ms 156.8MB 820ms 37ms bun 0.1.13
javascript 1.js 797ms 5.4ms 121.3MB 800ms 57ms node 18.9.1
zig 1.zig 1060ms 4.5ms 41.2MB 1037ms 7ms zig 0.10.0-dev.4192+c75e8f361

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 166ms 0.8ms 100.0MB 157ms 13ms bun 0.1.13
zig 1.zig 207ms 1.3ms 11.3MB 190ms 0ms zig 0.10.0-dev.4192+c75e8f361
javascript 1.js 247ms 3.3ms 88.7MB 233ms 23ms node 18.9.1

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 2.zig 315ms 23ms 0.7MB 303ms 0ms zig 0.10.0-dev.4192+c75e8f361
zig 1.zig 364ms 1.4ms 0.7MB 350ms 0ms zig 0.10.0-dev.4192+c75e8f361
javascript 6.js 626ms 6.2ms 46.9MB 610ms 7ms node 18.9.1
javascript 6.js 1062ms 1.4ms 63.3MB 1050ms 7ms bun 0.1.13

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 2.zig 35ms 3.1ms 0.7MB 20ms 0ms zig 0.10.0-dev.4192+c75e8f361
zig 1.zig 40ms 1.7ms 0.7MB 30ms 0ms zig 0.10.0-dev.4192+c75e8f361
javascript 6.js 122ms 1.0ms 48.6MB 107ms 3ms node 18.9.1
javascript 6.js 125ms 1.6ms 65.2MB 113ms 7ms bun 0.1.13

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 2.zig 426ms 6.6ms 6.1MB 413ms 0ms zig 0.10.0-dev.4192+c75e8f361

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 2.zig 95ms 0.4ms 2.5MB 83ms 0ms zig 0.10.0-dev.4192+c75e8f361

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 1.zig 2200ms 1.9ms 2.4MB 2173ms 10ms zig 0.10.0-dev.4192+c75e8f361
javascript 3.js timeout 0.0ms 0.0MB 0ms 0ms node 18.9.1

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 1.zig 494ms 0.2ms 2.0MB 483ms 0ms zig 0.10.0-dev.4192+c75e8f361
javascript 3.js 1608ms 4.0ms 62.8MB 1583ms 20ms node 18.9.1

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 2-m.zig 1067ms 4.3ms 1.8MB 2063ms 0ms zig 0.10.0-dev.4192+c75e8f361
zig 2.zig 2065ms 1.0ms 1.6MB 2050ms 0ms zig 0.10.0-dev.4192+c75e8f361
javascript 6-m.js 2766ms 9.8ms 71.1MB 5217ms 23ms node 18.9.1
zig 1.zig 4582ms 5.2ms 1.6MB 4567ms 0ms zig 0.10.0-dev.4192+c75e8f361

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 2-m.zig 277ms 1.4ms 0.8MB 510ms 0ms zig 0.10.0-dev.4192+c75e8f361
zig 2.zig 518ms 1.1ms 0.7MB 510ms 0ms zig 0.10.0-dev.4192+c75e8f361
javascript 6-m.js 862ms 6.6ms 74.2MB 1517ms 37ms node 18.9.1
zig 1.zig 1147ms 0.2ms 0.6MB 1137ms 0ms zig 0.10.0-dev.4192+c75e8f361

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 2-m.zig 76ms 2.3ms 0.8MB 120ms 0ms zig 0.10.0-dev.4192+c75e8f361
zig 2.zig 132ms 0.1ms 0.7MB 120ms 0ms zig 0.10.0-dev.4192+c75e8f361
zig 1.zig 289ms 0.5ms 0.7MB 280ms 0ms zig 0.10.0-dev.4192+c75e8f361
javascript 6.js 400ms 11ms 67.5MB 573ms 20ms node 18.9.1