C++ VS C# 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.)

fannkuch-redux

Input: 11

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
cpp 1-im.cpp 664ms 4.6ms 3.9MB 1283ms 0ms clang++ 14.0.0
cpp 1-im.cpp 695ms 2.8ms 1.3MB 1313ms 0ms g++ 12.2.0

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
cpp 1-im.cpp 65ms 1.5ms 5.9MB 107ms 0ms clang++ 14.0.0
cpp 1-im.cpp 67ms 2.2ms 1.3MB 110ms 0ms g++ 12.2.0

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
cpp 1.cpp 2.3ms 0.8ms 1.4MB 0ms 0ms clang++ 14.0.0
cpp 1.cpp 2.4ms 0.7ms 1.4MB 0ms 0ms g++ 12.2.0
csharp 1.cs 6.8ms 0.7ms 12.1MB 0ms 0ms dotnet/aot 7.0.102
csharp 1.cs 21ms 0.6ms 25.6MB 10ms 0ms mono 6.12.0
csharp 1.cs 79ms 2.2ms 101.4MB 28ms 26ms dotnet 7.0.102

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
cpp 0-i.cpp 184ms 0.1ms 1.3MB 173ms 0ms g++ 12.2.0
cpp 0-i.cpp 211ms 0.5ms 1.4MB 200ms 0ms clang++ 14.0.0
cpp 1.cpp 352ms 5.7ms 1.4MB 337ms 0ms clang++ 14.0.0
cpp 1.cpp 358ms 0.6ms 1.3MB 350ms 0ms g++ 12.2.0
csharp 9.cs 448ms 2.3ms 102.2MB 397ms 23ms dotnet 7.0.102
csharp 8.cs 580ms 4.8ms 12.2MB 577ms 0ms dotnet/aot 7.0.102
csharp 8.cs 635ms 6.9ms 100.1MB 573ms 27ms dotnet 7.0.102
csharp 8.cs 1299ms 31ms 24.8MB 1287ms 0ms mono 6.12.0

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
cpp 0-i.cpp 21ms 0.9ms 1.3MB 10ms 0ms g++ 12.2.0
cpp 0-i.cpp 26ms 1.3ms 1.4MB 17ms 0ms clang++ 14.0.0
cpp 1.cpp 38ms 1.3ms 1.4MB 30ms 0ms clang++ 14.0.0
cpp 1.cpp 39ms 1.6ms 1.4MB 30ms 0ms g++ 12.2.0
csharp 8.cs 67ms 2.9ms 12.1MB 63ms 0ms dotnet/aot 7.0.102
csharp 9.cs 124ms 3.7ms 101.9MB 80ms 20ms dotnet 7.0.102
csharp 8.cs 139ms 1.0ms 102.0MB 93ms 20ms dotnet 7.0.102
csharp 8.cs 159ms 5.7ms 24.9MB 140ms 3ms mono 6.12.0

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 2.cs 659ms 5.1ms 21.7MB 647ms 0ms dotnet/aot 7.0.102
cpp 1.cpp 664ms 9.6ms 7.5MB 650ms 0ms g++ 12.2.0
cpp 1.cpp 682ms 1.2ms 7.5MB 667ms 0ms clang++ 14.0.0
csharp 2.cs 782ms 5.7ms 107.2MB 727ms 30ms dotnet 7.0.102
csharp 1.cs 941ms 20ms 71.8MB 917ms 20ms dotnet/aot 7.0.102
csharp 1.cs 1256ms 13ms 86.6MB 1213ms 30ms mono 6.12.0
csharp 1.cs 1489ms 60ms 159.0MB 1407ms 57ms dotnet 7.0.102
csharp 2.cs 2819ms 24ms 34.0MB 2800ms 0ms mono 6.12.0

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 1.cs 148ms 5.7ms 29.8MB 137ms 7ms dotnet/aot 7.0.102
cpp 1.cpp 150ms 0.5ms 4.0MB 140ms 0ms g++ 12.2.0
csharp 2.cs 154ms 1.2ms 15.4MB 150ms 0ms dotnet/aot 7.0.102
cpp 1.cpp 155ms 0.5ms 3.9MB 143ms 0ms clang++ 14.0.0
csharp 1.cs 198ms 1.1ms 42.8MB 177ms 3ms mono 6.12.0
csharp 2.cs 244ms 0.6ms 100.7MB 187ms 23ms dotnet 7.0.102
csharp 1.cs 356ms 7.8ms 117.0MB 297ms 30ms dotnet 7.0.102
csharp 2.cs 672ms 0.6ms 25.9MB 657ms 3ms mono 6.12.0

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
cpp 7-m.cpp 894ms 1.2ms 3.3MB 1743ms 0ms clang++ 14.0.0
cpp 7-m.cpp 901ms 3.0ms 1.3MB 1753ms 0ms g++ 12.2.0
cpp 8-m.cpp 903ms 15ms 3.3MB 1740ms 3ms clang++ 14.0.0
cpp 8-m.cpp 903ms 1.4ms 1.3MB 1760ms 0ms g++ 12.2.0
cpp 6-im.cpp 1847ms 1.3ms 1.4MB 3627ms 0ms g++ 12.2.0
cpp 6-im.cpp 1870ms 13ms 3.4MB 3650ms 0ms clang++ 14.0.0
csharp 3-m.cs 2157ms 59ms 13.7MB 4067ms 7ms dotnet/aot 7.0.102
csharp 3-m.cs 4304ms 209ms 102.9MB 7280ms 33ms dotnet 7.0.102
csharp 3.cs timeout 0.0ms 27.0MB 9767ms 7ms mono 6.12.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
cpp 7-m.cpp 235ms 0.2ms 3.4MB 440ms 0ms clang++ 14.0.0
cpp 7-m.cpp 236ms 1.9ms 1.3MB 437ms 0ms g++ 12.2.0
cpp 8-m.cpp 237ms 1.3ms 1.3MB 440ms 0ms g++ 12.2.0
cpp 8-m.cpp 239ms 3.1ms 3.3MB 440ms 0ms clang++ 14.0.0
cpp 6-im.cpp 473ms 1.6ms 3.3MB 907ms 0ms clang++ 14.0.0
cpp 6-im.cpp 477ms 3.6ms 1.3MB 907ms 0ms g++ 12.2.0
csharp 3-m.cs 541ms 2.0ms 12.0MB 1027ms 3ms dotnet/aot 7.0.102
csharp 3-m.cs 1131ms 2.6ms 102.5MB 2010ms 40ms dotnet 7.0.102
csharp 3-m.cs 2696ms 136ms 27.7MB 5060ms 17ms mono 6.12.0

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
cpp 7-m.cpp 65ms 0.3ms 3.2MB 107ms 0ms clang++ 14.0.0
cpp 7-m.cpp 66ms 0.4ms 1.3MB 110ms 0ms g++ 12.2.0
cpp 8-m.cpp 66ms 2.4ms 1.3MB 107ms 0ms g++ 12.2.0
cpp 8-m.cpp 69ms 0.9ms 3.6MB 110ms 0ms clang++ 14.0.0
cpp 6-im.cpp 127ms 0.2ms 3.6MB 227ms 0ms clang++ 14.0.0
cpp 6-im.cpp 128ms 2.0ms 1.3MB 227ms 0ms g++ 12.2.0
csharp 3-m.cs 152ms 2.5ms 12.3MB 267ms 3ms dotnet/aot 7.0.102
csharp 3-m.cs 376ms 2.3ms 104.4MB 563ms 30ms dotnet 7.0.102
csharp 3-m.cs 686ms 9.6ms 27.8MB 1283ms 0ms mono 6.12.0