Zig VS C# benchmarks

Current benchmark data was generated on Thu Sep 22 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
csharp 1.cs 1354ms 10ms 390.0MB 1237ms 177ms dotnet 6.0.401
zig 1.zig 2143ms 29ms 49.2MB 2117ms 10ms zig 0.10.0-dev.4060+61aaef0b0
csharp 1.cs 2186ms 21ms 103.2MB 2480ms 190ms mono 6.12.0

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 1.cs 151ms 0.2ms 44.4MB 127ms 10ms mono 6.12.0
zig 1.zig 178ms 0.4ms 7.1MB 160ms 0ms zig 0.10.0-dev.4060+61aaef0b0
csharp 1.cs 192ms 5.2ms 95.3MB 140ms 27ms dotnet 6.0.401

edigits

Input: 250001

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 1.zig 3835ms 5.0ms 2.7MB 3793ms 20ms zig 0.10.0-dev.4060+61aaef0b0
csharp 1.cs timeout 0.0ms 0.0MB 0ms 0ms dotnet 6.0.401

Input: 100000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 1.zig 637ms 0.2ms 2.1MB 613ms 7ms zig 0.10.0-dev.4060+61aaef0b0
csharp 1.cs 1103ms 5.2ms 45.8MB 1063ms 13ms dotnet 6.0.401

fannkuch-redux

Input: 11

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 2-m.zig 1337ms 9.6ms 0.6MB 2607ms 0ms zig 0.10.0-dev.4060+61aaef0b0
zig 3-i.zig 1541ms 1.6ms 0.6MB 1530ms 0ms zig 0.10.0-dev.4060+61aaef0b0
zig 2.zig 2458ms 0.5ms 0.6MB 2447ms 0ms zig 0.10.0-dev.4060+61aaef0b0
zig 1.zig 3438ms 7.2ms 0.6MB 3427ms 0ms zig 0.10.0-dev.4060+61aaef0b0

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 2-m.zig 126ms 2.8ms 0.7MB 220ms 0ms zig 0.10.0-dev.4060+61aaef0b0
zig 3-i.zig 133ms 3.3ms 0.6MB 120ms 0ms zig 0.10.0-dev.4060+61aaef0b0
zig 2.zig 208ms 0.4ms 0.6MB 200ms 0ms zig 0.10.0-dev.4060+61aaef0b0
zig 1.zig 287ms 0.4ms 0.6MB 280ms 0ms zig 0.10.0-dev.4060+61aaef0b0

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 1.zig 155ms 0.5ms 0.6MB 147ms 0ms zig 0.10.0-dev.4060+61aaef0b0
csharp 5-m.cs 413ms 14ms 88.4MB 620ms 113ms dotnet 6.0.401
csharp 5-m.cs 505ms 24ms 58.8MB 850ms 97ms mono 6.12.0

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 1.zig 18ms 0.7ms 0.6MB 10ms 0ms zig 0.10.0-dev.4060+61aaef0b0
csharp 5.cs 93ms 9.3ms 37.3MB 120ms 17ms mono 6.12.0
csharp 5.cs 112ms 18ms 41.4MB 97ms 27ms dotnet 6.0.401

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 1.zig 2.3ms 0.6ms 0.6MB 0ms 0ms zig 0.10.0-dev.4060+61aaef0b0
csharp 1.cs 19ms 0.3ms 23.8MB 10ms 0ms mono 6.12.0
csharp 1.cs 51ms 4.5ms 29.0MB 22ms 4ms dotnet 6.0.401

json-serde

Input: sample 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 1.zig 126ms 0.5ms 12.0MB 113ms 0ms zig 0.10.0-dev.4060+61aaef0b0
csharp 2.cs 379ms 20ms 66.3MB 313ms 37ms dotnet 6.0.401
csharp 1.cs 536ms 2.0ms 146.8MB 503ms 67ms dotnet 6.0.401

Input: canada 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 1.zig 769ms 0.5ms 80.6MB 723ms 30ms zig 0.10.0-dev.4060+61aaef0b0
csharp 2.cs 2027ms 7.5ms 260.8MB 2113ms 97ms dotnet 6.0.401
csharp 1.cs 3386ms 174ms 762.4MB 3480ms 303ms dotnet 6.0.401

knucleotide

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 6.cs 1202ms 73ms 75.3MB 1703ms 40ms dotnet 6.0.401
zig 1.zig 1294ms 6.2ms 21.7MB 1267ms 10ms zig 0.10.0-dev.4060+61aaef0b0
csharp 6-m.cs 1582ms 59ms 72.3MB 2573ms 23ms mono 6.12.0

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 1.zig 142ms 2.0ms 9.1MB 127ms 3ms zig 0.10.0-dev.4060+61aaef0b0
csharp 6.cs 238ms 5.4ms 63.9MB 257ms 17ms dotnet 6.0.401
csharp 6.cs 246ms 11ms 56.4MB 313ms 20ms mono 6.12.0

lru

Input: 1000 1000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 1.zig 46ms 0.9ms 2.8MB 33ms 0ms zig 0.10.0-dev.4060+61aaef0b0
csharp 2.cs 186ms 1.6ms 25.5MB 173ms 0ms mono 6.12.0
csharp 2.cs 206ms 1.5ms 30.2MB 177ms 0ms dotnet 6.0.401
csharp 1.cs 1658ms 11ms 89.7MB 1613ms 30ms dotnet 6.0.401
csharp 1.cs 3025ms 18ms 49.7MB 2983ms 30ms mono 6.12.0

Input: 1000 3000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 1.zig 132ms 5.1ms 2.7MB 120ms 0ms zig 0.10.0-dev.4060+61aaef0b0
csharp 2.cs 458ms 3.7ms 28.2MB 433ms 0ms dotnet 6.0.401
csharp 2.cs 506ms 0.4ms 23.7MB 490ms 0ms mono 6.12.0
csharp 1.cs 4679ms 40ms 91.1MB 4627ms 23ms dotnet 6.0.401
csharp 1.cs timeout 0.0ms 0.0MB 0ms 0ms mono 6.12.0

Input: 100 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 1.zig 21ms 0.8ms 1.5MB 10ms 0ms zig 0.10.0-dev.4060+61aaef0b0
csharp 2.cs 105ms 0.4ms 25.4MB 87ms 3ms mono 6.12.0
csharp 2.cs 130ms 2.2ms 28.0MB 100ms 0ms dotnet 6.0.401
csharp 1.cs 3185ms 1.5ms 31.5MB 3167ms 3ms mono 6.12.0
csharp 1.cs 3194ms 6.3ms 77.0MB 3133ms 23ms dotnet 6.0.401

mandelbrot

Input: 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 1.zig 423ms 0.3ms 4.2MB 410ms 0ms zig 0.10.0-dev.4060+61aaef0b0
csharp 2.cs 735ms 3.4ms 94.9MB 677ms 33ms dotnet 6.0.401
csharp 1.cs 3779ms 104ms 32.9MB 3733ms 10ms dotnet 6.0.401
csharp 3.cs 4355ms 13ms 36.3MB 4313ms 7ms dotnet 6.0.401
csharp 1.cs timeout 0.0ms 0.0MB 0ms 0ms mono 6.12.0

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 1.zig 20ms 0.6ms 1.4MB 10ms 0ms zig 0.10.0-dev.4060+61aaef0b0
csharp 2.cs 95ms 2.7ms 36.8MB 60ms 3ms dotnet 6.0.401
csharp 3.cs 252ms 3.5ms 31.1MB 220ms 0ms dotnet 6.0.401
csharp 1.cs 296ms 4.3ms 29.4MB 263ms 7ms dotnet 6.0.401
csharp 1.cs 832ms 0.5ms 27.5MB 813ms 7ms mono 6.12.0

merkletrees

Input: 17

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 1.cs 932ms 13ms 393.5MB 783ms 183ms dotnet 6.0.401
csharp 2.cs 934ms 20ms 379.2MB 803ms 160ms dotnet 6.0.401
zig 1.zig 1098ms 74ms 41.1MB 1073ms 10ms zig 0.10.0-dev.4060+61aaef0b0
csharp 1.cs 1680ms 15ms 144.9MB 2053ms 127ms mono 6.12.0

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 1.zig 211ms 0.3ms 11.3MB 197ms 0ms zig 0.10.0-dev.4060+61aaef0b0
csharp 2.cs 255ms 6.6ms 85.1MB 200ms 30ms dotnet 6.0.401
csharp 1.cs 293ms 6.0ms 183.8MB 203ms 67ms dotnet 6.0.401
csharp 1.cs 312ms 3.4ms 72.7MB 280ms 43ms mono 6.12.0

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 2.zig 302ms 0.8ms 0.6MB 290ms 0ms zig 0.10.0-dev.4060+61aaef0b0
zig 1.zig 367ms 2.3ms 0.6MB 357ms 0ms zig 0.10.0-dev.4060+61aaef0b0
csharp 9.cs 405ms 2.4ms 27.3MB 373ms 0ms dotnet 6.0.401
csharp 8.cs 535ms 3.1ms 29.3MB 507ms 0ms dotnet 6.0.401
csharp 8.cs 1127ms 33ms 24.8MB 1113ms 0ms mono 6.12.0

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 2.zig 32ms 0.2ms 0.6MB 20ms 0ms zig 0.10.0-dev.4060+61aaef0b0
zig 1.zig 42ms 5.2ms 0.6MB 33ms 0ms zig 0.10.0-dev.4060+61aaef0b0
csharp 9.cs 89ms 5.9ms 27.3MB 60ms 3ms dotnet 6.0.401
csharp 8.cs 103ms 4.1ms 31.3MB 73ms 0ms dotnet 6.0.401
csharp 8.cs 134ms 1.5ms 25.1MB 120ms 0ms mono 6.12.0

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 2.zig 419ms 0.8ms 6.0MB 410ms 0ms zig 0.10.0-dev.4060+61aaef0b0
csharp 1.cs 858ms 20ms 88.0MB 813ms 13ms dotnet 6.0.401
csharp 1.cs 910ms 21ms 84.8MB 870ms 20ms mono 6.12.0
csharp 2.cs 996ms 3.9ms 38.1MB 963ms 3ms dotnet 6.0.401
csharp 2.cs 2432ms 1.1ms 34.3MB 2413ms 7ms mono 6.12.0

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 2.zig 95ms 0.9ms 2.6MB 87ms 0ms zig 0.10.0-dev.4060+61aaef0b0
csharp 1.cs 183ms 0.3ms 40.8MB 163ms 7ms mono 6.12.0
csharp 1.cs 186ms 3.5ms 45.9MB 153ms 7ms dotnet 6.0.401
csharp 2.cs 278ms 1.1ms 29.7MB 247ms 0ms dotnet 6.0.401
csharp 2.cs 605ms 2.9ms 27.9MB 590ms 3ms mono 6.12.0

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 1.zig 2205ms 6.2ms 2.3MB 2177ms 10ms zig 0.10.0-dev.4060+61aaef0b0
csharp 1.cs timeout 0.0ms 0.0MB 0ms 0ms dotnet 6.0.401

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 1.zig 497ms 1.0ms 1.9MB 483ms 0ms zig 0.10.0-dev.4060+61aaef0b0
csharp 1.cs 1271ms 0.5ms 94.7MB 1260ms 30ms dotnet 6.0.401

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 2-m.zig 1073ms 15ms 1.8MB 2057ms 0ms zig 0.10.0-dev.4060+61aaef0b0
zig 2.zig 2061ms 0.6ms 0.6MB 2050ms 0ms zig 0.10.0-dev.4060+61aaef0b0
csharp 3-m.cs 3104ms 414ms 30.4MB 5183ms 13ms dotnet 6.0.401
zig 1.zig 4579ms 4.9ms 1.6MB 4560ms 0ms zig 0.10.0-dev.4060+61aaef0b0
csharp 3.cs timeout 0.0ms 0.0MB 0ms 0ms mono 6.12.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 2-m.zig 277ms 1.7ms 0.8MB 507ms 0ms zig 0.10.0-dev.4060+61aaef0b0
zig 2.zig 517ms 0.6ms 0.6MB 503ms 0ms zig 0.10.0-dev.4060+61aaef0b0
csharp 3-m.cs 716ms 4.2ms 31.4MB 1293ms 13ms dotnet 6.0.401
zig 1.zig 1146ms 0.7ms 0.6MB 1140ms 0ms zig 0.10.0-dev.4060+61aaef0b0
csharp 3-m.cs 3178ms 135ms 29.2MB 6037ms 3ms mono 6.12.0

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 2-m.zig 76ms 0.7ms 0.8MB 120ms 0ms zig 0.10.0-dev.4060+61aaef0b0
zig 2.zig 131ms 0.3ms 0.6MB 120ms 0ms zig 0.10.0-dev.4060+61aaef0b0
csharp 3-m.cs 231ms 1.3ms 30.4MB 353ms 7ms dotnet 6.0.401
zig 1.zig 289ms 0.3ms 0.6MB 280ms 0ms zig 0.10.0-dev.4060+61aaef0b0
csharp 3-m.cs 802ms 1.9ms 29.5MB 1527ms 3ms mono 6.12.0