C VS C# benchmarks

Current benchmark data was generated on Fri May 20 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.)

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 1.c 1.5ms 0.5ms 0.6MB 0ms 0ms zigcc 0.10.0
c 1.c 2.2ms 0.7ms 2.3MB 0ms 0ms gcc 12.1.0
c 1.c 2.8ms 1.5ms 1.1MB 0ms 0ms clang 11.0.0
csharp 1.cs 19ms 0.4ms 24.3MB 10ms 0ms mono 6.12.0
csharp 1.cs 50ms 4.7ms 32.9MB 24ms 2ms dotnet 6.0.300

knucleotide

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 1-m.c 244ms 1.5ms 23.6MB 407ms 13ms gcc 12.1.0
c 1-m.c 580ms 38ms 20.2MB 900ms 13ms clang 11.0.0
csharp 6.cs 1349ms 172ms 78.1MB 1697ms 40ms dotnet 6.0.300
csharp 6-m.cs 1608ms 60ms 71.9MB 2610ms 23ms mono 6.12.0

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 1.c 34ms 1.4ms 12.8MB 40ms 0ms gcc 12.1.0
c 1-m.c 66ms 3.4ms 9.6MB 100ms 0ms clang 11.0.0
csharp 6.cs 237ms 6.1ms 66.0MB 250ms 23ms dotnet 6.0.300
csharp 6.cs 251ms 7.8ms 52.7MB 333ms 10ms mono 6.12.0

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 5.c 321ms 0.9ms 1.0MB 310ms 0ms gcc 12.1.0
c 8-i.c 346ms 2.4ms 1.1MB 333ms 0ms clang 11.0.0
c 8-i.c 365ms 0.6ms 0.9MB 357ms 0ms gcc 12.1.0
c 5.c 368ms 1.3ms 1.1MB 360ms 0ms clang 11.0.0
c 8-i.c 375ms 0.5ms 0.6MB 363ms 0ms zigcc 0.10.0
c 2.c 397ms 0.5ms 0.6MB 390ms 0ms zigcc 0.10.0
c 5.c 401ms 0.7ms 0.6MB 390ms 0ms zigcc 0.10.0
c 2.c 412ms 6.0ms 1.1MB 393ms 0ms clang 11.0.0
csharp 9.cs 438ms 9.0ms 29.3MB 410ms 0ms dotnet 6.0.300
csharp 8.cs 537ms 3.7ms 29.1MB 503ms 3ms dotnet 6.0.300
c 2.c 624ms 0.6ms 1.0MB 613ms 0ms gcc 12.1.0
csharp 8.cs 1110ms 1.7ms 27.0MB 1097ms 0ms mono 6.12.0

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 5.c 36ms 1.0ms 0.9MB 27ms 0ms gcc 12.1.0
c 8-i.c 39ms 2.0ms 1.1MB 30ms 0ms clang 11.0.0
c 8-i.c 39ms 0.1ms 0.9MB 30ms 0ms gcc 12.1.0
c 8-i.c 40ms 0.3ms 0.6MB 30ms 0ms zigcc 0.10.0
c 5.c 40ms 0.4ms 1.1MB 30ms 0ms clang 11.0.0
c 2.c 43ms 1.0ms 0.6MB 30ms 0ms zigcc 0.10.0
c 2.c 44ms 0.7ms 1.1MB 30ms 0ms clang 11.0.0
c 5.c 45ms 5.2ms 0.6MB 30ms 0ms zigcc 0.10.0
c 2.c 65ms 0.3ms 1.0MB 53ms 0ms gcc 12.1.0
csharp 9.cs 95ms 4.6ms 29.2MB 67ms 0ms dotnet 6.0.300
csharp 8.cs 101ms 4.9ms 31.2MB 77ms 0ms dotnet 6.0.300
csharp 8.cs 135ms 4.1ms 27.0MB 123ms 0ms mono 6.12.0

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 1.c 795ms 30ms 40.2MB 770ms 10ms zigcc 0.10.0
c 1.c 813ms 6.4ms 40.8MB 770ms 27ms clang 11.0.0
c 1.c 905ms 22ms 41.1MB 880ms 10ms gcc 12.1.0
csharp 1.cs 910ms 19ms 88.6MB 880ms 17ms mono 6.12.0
csharp 1.cs 960ms 29ms 87.9MB 910ms 20ms dotnet 6.0.300
csharp 2.cs 1031ms 0.9ms 40.1MB 993ms 7ms dotnet 6.0.300
csharp 2.cs 2587ms 3.8ms 32.5MB 2577ms 0ms mono 6.12.0

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 1.c 119ms 2.7ms 10.9MB 107ms 0ms zigcc 0.10.0
c 1.c 122ms 0.2ms 11.6MB 107ms 3ms clang 11.0.0
c 1.c 122ms 2.7ms 11.9MB 107ms 0ms gcc 12.1.0
csharp 1.cs 185ms 0.6ms 40.7MB 173ms 3ms mono 6.12.0
csharp 1.cs 187ms 4.3ms 45.9MB 153ms 7ms dotnet 6.0.300
csharp 2.cs 301ms 3.8ms 31.7MB 273ms 0ms dotnet 6.0.300
csharp 2.cs 644ms 0.3ms 25.9MB 630ms 0ms mono 6.12.0

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 4-m.c 1406ms 13ms 1.0MB 2743ms 0ms gcc 12.1.0
c 6-im.c 1593ms 20ms 1.0MB 3113ms 0ms gcc 12.1.0
c 4-m.c 1748ms 12ms 3.1MB 3420ms 0ms clang 11.0.0
c 6-im.c 1749ms 15ms 2.8MB 3407ms 3ms clang 11.0.0
c 5-im.c 1850ms 3.6ms 1.0MB 3640ms 0ms gcc 12.1.0
c 5-im.c 2045ms 10ms 3.1MB 4003ms 0ms clang 11.0.0
c 3-m.c 2221ms 8.6ms 3.1MB 4363ms 0ms clang 11.0.0
c 3-m.c 2224ms 11ms 0.9MB 4360ms 0ms gcc 12.1.0
csharp 3-m.cs 2999ms 510ms 30.9MB 5187ms 20ms dotnet 6.0.300
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
c 4-m.c 360ms 2.2ms 1.0MB 683ms 3ms gcc 12.1.0
c 6-im.c 405ms 1.3ms 1.0MB 780ms 0ms gcc 12.1.0
c 6-im.c 445ms 3.9ms 3.0MB 847ms 0ms clang 11.0.0
c 4-m.c 452ms 12ms 2.9MB 857ms 0ms clang 11.0.0
c 5-im.c 473ms 1.8ms 1.0MB 910ms 0ms gcc 12.1.0
c 5-im.c 519ms 5.0ms 3.1MB 1003ms 0ms clang 11.0.0
c 3-m.c 561ms 1.6ms 1.0MB 1087ms 0ms gcc 12.1.0
c 3-m.c 568ms 2.9ms 3.0MB 1087ms 3ms clang 11.0.0
csharp 3-m.cs 719ms 3.7ms 29.5MB 1297ms 13ms dotnet 6.0.300
csharp 3-m.cs 3181ms 129ms 29.4MB 6040ms 10ms mono 6.12.0

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
c 4-m.c 97ms 0.5ms 1.0MB 170ms 0ms gcc 12.1.0
c 6-im.c 110ms 2.4ms 1.0MB 200ms 0ms gcc 12.1.0
c 6-im.c 120ms 2.3ms 3.1MB 213ms 0ms clang 11.0.0
c 4-m.c 121ms 3.5ms 3.1MB 213ms 0ms clang 11.0.0
c 5-im.c 127ms 0.7ms 1.0MB 230ms 0ms gcc 12.1.0
c 5-im.c 142ms 5.1ms 3.0MB 250ms 0ms clang 11.0.0
c 3-m.c 151ms 1.4ms 3.0MB 273ms 0ms clang 11.0.0
c 3-m.c 151ms 1.6ms 1.0MB 273ms 0ms gcc 12.1.0
csharp 3-m.cs 235ms 3.5ms 30.1MB 360ms 3ms dotnet 6.0.300
csharp 3-m.cs 805ms 2.5ms 30.0MB 1530ms 3ms mono 6.12.0