Zig VS C# benchmarks

Current benchmark data was generated on Mon Mar 31 2025, full log can be found HERE

CONTRIBUTIONS are WELCOME!

[x86_64][4 cores] AMD EPYC 7763 64-Core Processor (Model 1)

* -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 909ms 8.6ms 192.3MB 903ms 150ms dotnet 9.0.202
csharp 1.cs 978ms 14ms 172.2MB 970ms 130ms dotnet/aot 9.0.202
csharp 1.cs 1684ms 30ms 107.4MB 1873ms 210ms mono 6.12.0
zig 1.zig 1822ms 94ms 49.0MB 1787ms 20ms zig 0.14.0

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 1.cs 120ms 7.8ms 31.5MB 93ms 27ms dotnet/aot 9.0.202
csharp 1.cs 142ms 0.8ms 44.3MB 120ms 13ms mono 6.12.0
zig 1.zig 154ms 1.6ms 7.0MB 140ms 0ms zig 0.14.0
csharp 1.cs 190ms 1.3ms 50.5MB 147ms 40ms dotnet 9.0.202

edigits

Input: 250001

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 1.zig 2250ms 2.7ms 2.5MB 2220ms 13ms zig 0.14.0
csharp 1.cs 4086ms 26ms 18.1MB 4060ms 10ms dotnet/aot 9.0.202
csharp 1.cs 4913ms 49ms 37.9MB 4883ms 17ms dotnet 9.0.202

Input: 100000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 1.zig 380ms 1.3ms 1.9MB 360ms 0ms zig 0.14.0
csharp 1.cs 675ms 3.5ms 14.6MB 653ms 3ms dotnet/aot 9.0.202
csharp 1.cs 854ms 1.8ms 33.9MB 833ms 13ms dotnet 9.0.202

fannkuch-redux

Input: 11

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 2-m.zig 634ms 1.8ms 1.4MB 2393ms 0ms zig 0.14.0
zig 3-i.zig 1767ms 0.8ms 1.0MB 1760ms 0ms zig 0.14.0
zig 1.zig 2716ms 0.8ms 1.0MB 2710ms 0ms zig 0.14.0

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 2-m.zig 60ms 0.8ms 1.4MB 200ms 0ms zig 0.14.0
zig 3-i.zig 147ms 0.6ms 1.0MB 140ms 0ms zig 0.14.0
zig 1.zig 229ms 0.5ms 1.0MB 220ms 0ms zig 0.14.0

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 1.zig 89ms 0.3ms 1.0MB 80ms 0ms zig 0.14.0
csharp 5-m.cs 125ms 3.8ms 22.3MB 357ms 80ms dotnet/aot 9.0.202
csharp 5-m.cs 226ms 19ms 44.3MB 470ms 120ms dotnet 9.0.202
csharp 5-m.cs 231ms 6.2ms 46.4MB 667ms 87ms mono 6.12.0

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 1.zig 11ms 0.8ms 1.1MB 0ms 0ms zig 0.14.0
csharp 5-m.cs 24ms 0.7ms 15.6MB 30ms 10ms dotnet/aot 9.0.202
csharp 5-m.cs 64ms 5.1ms 37.0MB 87ms 17ms dotnet 9.0.202
csharp 5-m.cs 72ms 1.6ms 29.1MB 107ms 17ms mono 6.12.0

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 1.zig 1.0ms 0.0ms 1.0MB 0ms 0ms zig 0.14.0
csharp 1.cs 7.6ms 2.7ms 9.6MB 0ms 0ms dotnet/aot 9.0.202
csharp 1.cs 32ms 0.6ms 21.3MB 20ms 0ms mono 6.12.0
csharp 1.cs 45ms 3.1ms 26.3MB 22ms 8ms dotnet 9.0.202

knucleotide

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 6-m.cs 454ms 15ms 46.5MB 1217ms 17ms dotnet/aot 9.0.202
zig 1.zig 499ms 8.5ms 26.3MB 477ms 7ms zig 0.14.0
csharp 6-m.cs 749ms 4.8ms 68.6MB 2083ms 33ms dotnet 9.0.202
csharp 6-m.cs 1035ms 14ms 66.4MB 2993ms 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 66ms 2.2ms 15.4MB 53ms 3ms zig 0.14.0
csharp 6-m.cs 96ms 4.5ms 36.1MB 153ms 17ms dotnet/aot 9.0.202
csharp 6-m.cs 178ms 6.9ms 57.5MB 253ms 30ms dotnet 9.0.202
csharp 6-m.cs 200ms 1.8ms 50.6MB 387ms 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 34ms 0.8ms 2.8MB 27ms 0ms zig 0.14.0
csharp 2.cs 95ms 1.1ms 9.8MB 83ms 0ms dotnet/aot 9.0.202
csharp 2.cs 149ms 1.5ms 23.2MB 140ms 0ms mono 6.12.0
csharp 2.cs 251ms 4.0ms 29.6MB 233ms 10ms dotnet 9.0.202
csharp 1.cs 1037ms 4.4ms 13.3MB 1023ms 7ms dotnet/aot 9.0.202
csharp 1.cs 1284ms 17ms 32.9MB 1280ms 3ms dotnet 9.0.202
csharp 1.cs 3333ms 39ms 49.6MB 3290ms 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 92ms 0.9ms 2.8MB 83ms 0ms zig 0.14.0
csharp 2.cs 273ms 1.7ms 9.9MB 260ms 0ms dotnet/aot 9.0.202
csharp 2.cs 360ms 3.5ms 22.8MB 343ms 0ms mono 6.12.0
csharp 2.cs 403ms 4.6ms 29.3MB 383ms 7ms dotnet 9.0.202
csharp 1.cs 3112ms 26ms 13.3MB 3087ms 10ms dotnet/aot 9.0.202
csharp 1.cs 3600ms 76ms 32.9MB 3573ms 20ms dotnet 9.0.202
csharp 1.cs timeout 0.0ms 45.8MB 4947ms 43ms mono 6.12.0

Input: 100 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 1.zig 16ms 0.7ms 1.3MB 10ms 0ms zig 0.14.0
csharp 2.cs 53ms 0.6ms 9.6MB 40ms 0ms dotnet/aot 9.0.202
csharp 2.cs 93ms 2.5ms 22.7MB 80ms 0ms mono 6.12.0
csharp 2.cs 171ms 0.3ms 29.1MB 143ms 7ms dotnet 9.0.202
csharp 1.cs 1619ms 3.8ms 32.5MB 1610ms 10ms dotnet 9.0.202
csharp 1.cs 1803ms 2.1ms 12.9MB 1790ms 0ms dotnet/aot 9.0.202
csharp 1.cs 1821ms 8.6ms 28.8MB 1803ms 0ms mono 6.12.0

mandelbrot

Input: 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 1.zig 247ms 2.2ms 4.0MB 237ms 0ms zig 0.14.0
csharp 4.cs 345ms 4.7ms 37.5MB 320ms 13ms dotnet 9.0.202
csharp 2.cs 597ms 87ms 39.7MB 573ms 13ms dotnet 9.0.202
csharp 1.cs 2046ms 14ms 36.4MB 2023ms 10ms dotnet 9.0.202
csharp 3.cs 2352ms 15ms 16.4MB 2337ms 0ms dotnet/aot 9.0.202
csharp 3.cs 2448ms 6.9ms 36.5MB 2420ms 13ms dotnet 9.0.202
csharp 1.cs 4021ms 43ms 16.4MB 4007ms 0ms dotnet/aot 9.0.202
csharp 1.cs timeout 0.0ms 23.1MB 4990ms 0ms mono 6.12.0

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 1.zig 12ms 0.4ms 1.1MB 0ms 0ms zig 0.14.0
csharp 4.cs 89ms 9.3ms 34.6MB 67ms 10ms dotnet 9.0.202
csharp 3.cs 105ms 2.2ms 13.6MB 90ms 0ms dotnet/aot 9.0.202
csharp 2.cs 115ms 5.5ms 36.5MB 90ms 10ms dotnet 9.0.202
csharp 1.cs 136ms 2.8ms 33.6MB 120ms 7ms dotnet 9.0.202
csharp 3.cs 163ms 1.1ms 34.0MB 140ms 10ms dotnet 9.0.202
csharp 1.cs 172ms 3.0ms 13.5MB 160ms 0ms dotnet/aot 9.0.202
csharp 1.cs 574ms 6.1ms 23.8MB 560ms 0ms mono 6.12.0

merkletrees

Input: 17

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 2.cs 552ms 23ms 120.8MB 497ms 93ms dotnet/aot 9.0.202
csharp 1.cs 621ms 12ms 154.1MB 560ms 130ms dotnet/aot 9.0.202
csharp 2.cs 668ms 39ms 137.8MB 610ms 100ms dotnet 9.0.202
csharp 1.cs 725ms 42ms 168.6MB 643ms 143ms dotnet 9.0.202
zig 1.zig 855ms 3.1ms 41.0MB 827ms 13ms zig 0.14.0
csharp 1.cs 1248ms 3.8ms 142.4MB 1437ms 147ms mono 6.12.0

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 2.cs 135ms 4.1ms 58.8MB 110ms 30ms dotnet/aot 9.0.202
csharp 1.cs 152ms 3.0ms 72.5MB 117ms 50ms dotnet/aot 9.0.202
zig 1.zig 173ms 2.3ms 11.0MB 160ms 0ms zig 0.14.0
csharp 2.cs 257ms 7.3ms 72.8MB 220ms 40ms dotnet 9.0.202
csharp 1.cs 258ms 6.4ms 67.4MB 230ms 33ms mono 6.12.0
csharp 1.cs 315ms 37ms 91.1MB 237ms 63ms dotnet 9.0.202

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 3.zig 199ms 0.7ms 1.0MB 190ms 0ms zig 0.14.0
zig 2.zig 279ms 0.3ms 1.0MB 270ms 0ms zig 0.14.0
zig 1.zig 316ms 1.3ms 1.1MB 303ms 0ms zig 0.14.0
csharp 9.cs 358ms 2.8ms 27.6MB 340ms 10ms dotnet 9.0.202
csharp 8.cs 376ms 6.6ms 9.8MB 363ms 0ms dotnet/aot 9.0.202
csharp 8.cs 419ms 3.2ms 27.5MB 400ms 7ms dotnet 9.0.202
csharp 8.cs 1245ms 4.0ms 22.1MB 1227ms 0ms mono 6.12.0

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 3.zig 22ms 0.3ms 1.0MB 10ms 0ms zig 0.14.0
zig 2.zig 30ms 0.2ms 1.0MB 20ms 0ms zig 0.14.0
zig 1.zig 34ms 0.4ms 1.1MB 30ms 0ms zig 0.14.0
csharp 8.cs 45ms 1.0ms 9.9MB 30ms 0ms dotnet/aot 9.0.202
csharp 9.cs 93ms 3.1ms 27.9MB 73ms 7ms dotnet 9.0.202
csharp 8.cs 93ms 2.6ms 27.5MB 73ms 7ms dotnet 9.0.202
csharp 8.cs 161ms 1.5ms 22.8MB 150ms 0ms mono 6.12.0

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 1.zig 263ms 1.5ms 40.1MB 250ms 0ms zig 0.14.0
csharp 1.cs 292ms 3.4ms 78.8MB 270ms 10ms dotnet/aot 9.0.202
zig 2.zig 322ms 3.8ms 6.0MB 313ms 0ms zig 0.14.0
csharp 1.cs 323ms 2.9ms 96.2MB 300ms 13ms dotnet 9.0.202
csharp 2.cs 392ms 2.6ms 35.6MB 370ms 10ms dotnet 9.0.202
csharp 2.cs 423ms 4.5ms 17.6MB 410ms 0ms dotnet/aot 9.0.202
csharp 1.cs 533ms 6.3ms 84.0MB 513ms 7ms mono 6.12.0
csharp 2.cs 1870ms 2.9ms 29.8MB 1853ms 0ms mono 6.12.0

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 1.zig 52ms 1.4ms 10.8MB 40ms 0ms zig 0.14.0
csharp 1.cs 64ms 1.5ms 25.1MB 50ms 3ms dotnet/aot 9.0.202
zig 2.zig 81ms 1.3ms 2.3MB 70ms 0ms zig 0.14.0
csharp 1.cs 100ms 4.1ms 42.5MB 80ms 10ms dotnet 9.0.202
csharp 2.cs 106ms 0.6ms 12.0MB 97ms 0ms dotnet/aot 9.0.202
csharp 2.cs 127ms 5.4ms 30.0MB 103ms 10ms dotnet 9.0.202
csharp 1.cs 144ms 2.3ms 38.3MB 130ms 0ms mono 6.12.0
csharp 2.cs 484ms 8.9ms 21.1MB 470ms 0ms mono 6.12.0

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 1.zig 2465ms 18ms 2.2MB 2437ms 13ms zig 0.14.0
csharp 1.cs 3216ms 8.5ms 13.9MB 3117ms 97ms dotnet/aot 9.0.202
csharp 1.cs 3599ms 79ms 38.3MB 3620ms 123ms dotnet 9.0.202

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
zig 1.zig 569ms 2.6ms 1.6MB 560ms 0ms zig 0.14.0
csharp 1.cs 753ms 3.9ms 13.4MB 720ms 23ms dotnet/aot 9.0.202
csharp 1.cs 980ms 8.6ms 37.5MB 1067ms 33ms dotnet 9.0.202

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 3-m.cs 1841ms 7.6ms 10.5MB 7173ms 10ms dotnet/aot 9.0.202
csharp 3-m.cs 1930ms 5.0ms 30.1MB 7370ms 13ms dotnet 9.0.202
zig 1.zig 3705ms 29ms 1.4MB 3693ms 0ms zig 0.14.0
csharp 3-m.cs 4705ms 144ms 25.6MB 17887ms 20ms mono 6.12.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 3-m.cs 492ms 25ms 10.5MB 1780ms 7ms dotnet/aot 9.0.202
csharp 3-m.cs 652ms 40ms 29.8MB 1707ms 13ms dotnet 9.0.202
zig 1.zig 922ms 1.2ms 1.3MB 910ms 0ms zig 0.14.0
csharp 3-m.cs 1237ms 39ms 27.5MB 4640ms 13ms mono 6.12.0

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 3-m.cs 126ms 1.2ms 10.4MB 443ms 0ms dotnet/aot 9.0.202
zig 1.zig 234ms 0.8ms 1.3MB 223ms 0ms zig 0.14.0
csharp 3-m.cs 251ms 4.1ms 28.6MB 460ms 13ms dotnet 9.0.202
csharp 3-m.cs 348ms 0.4ms 25.2MB 1173ms 13ms mono 6.12.0