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

fannkuch-redux

Input: 11

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
cpp 1-im.cpp 753ms 2.9ms 1.0MB 1457ms 0ms g++ 12.2.0
cpp 1-im.cpp 776ms 3.5ms 3.6MB 1510ms 0ms clang++ 11.0.0

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
cpp 1-im.cpp 72ms 2.0ms 1.0MB 123ms 0ms g++ 12.2.0
cpp 1-im.cpp 72ms 0.4ms 3.6MB 120ms 0ms clang++ 11.0.0

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
cpp 1.cpp 1.7ms 0.2ms 1.1MB 0ms 0ms clang++ 11.0.0
cpp 1.cpp 1.7ms 0.4ms 1.0MB 0ms 0ms g++ 12.2.0
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

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
cpp 0-i.cpp 225ms 0.4ms 1.0MB 210ms 0ms g++ 12.2.0
cpp 0-i.cpp 258ms 0.9ms 1.1MB 243ms 0ms clang++ 11.0.0
cpp 1.cpp 339ms 0.5ms 1.0MB 330ms 0ms g++ 12.2.0
cpp 1.cpp 385ms 0.9ms 1.1MB 373ms 0ms clang++ 11.0.0
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
cpp 0-i.cpp 25ms 0.3ms 1.0MB 17ms 0ms g++ 12.2.0
cpp 0-i.cpp 28ms 0.2ms 1.1MB 20ms 0ms clang++ 11.0.0
cpp 1.cpp 38ms 0.9ms 0.9MB 30ms 0ms g++ 12.2.0
cpp 1.cpp 42ms 1.4ms 1.1MB 30ms 0ms clang++ 11.0.0
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
cpp 1.cpp 415ms 0.6ms 7.4MB 403ms 0ms clang++ 11.0.0
cpp 1.cpp 645ms 1.5ms 7.7MB 630ms 0ms g++ 12.2.0
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
cpp 1.cpp 94ms 1.0ms 3.8MB 87ms 0ms clang++ 11.0.0
cpp 1.cpp 155ms 3.0ms 4.1MB 140ms 0ms g++ 12.2.0
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

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
cpp 7-m.cpp 1060ms 3.2ms 3.2MB 2073ms 0ms clang++ 11.0.0
cpp 8-m.cpp 1062ms 3.4ms 3.1MB 2077ms 0ms clang++ 11.0.0
cpp 7-m.cpp 1063ms 1.9ms 0.9MB 2083ms 0ms g++ 12.2.0
cpp 8-m.cpp 1067ms 6.3ms 1.0MB 2083ms 0ms g++ 12.2.0
cpp 6-im.cpp 2241ms 18ms 0.9MB 4397ms 0ms g++ 12.2.0
cpp 6-im.cpp 2244ms 14ms 3.2MB 4407ms 0ms clang++ 11.0.0
csharp 3-m.cs 3104ms 414ms 30.4MB 5183ms 13ms dotnet 6.0.401
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
cpp 7-m.cpp 275ms 1.6ms 3.2MB 520ms 0ms clang++ 11.0.0
cpp 7-m.cpp 276ms 0.6ms 0.9MB 520ms 0ms g++ 12.2.0
cpp 8-m.cpp 276ms 3.4ms 3.2MB 520ms 0ms clang++ 11.0.0
cpp 8-m.cpp 277ms 0.5ms 0.9MB 523ms 0ms g++ 12.2.0
cpp 6-im.cpp 568ms 2.5ms 3.2MB 1100ms 0ms clang++ 11.0.0
cpp 6-im.cpp 570ms 2.4ms 0.9MB 1100ms 0ms g++ 12.2.0
csharp 3-m.cs 716ms 4.2ms 31.4MB 1293ms 13ms dotnet 6.0.401
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
cpp 8-m.cpp 76ms 1.1ms 0.9MB 127ms 0ms g++ 12.2.0
cpp 8-m.cpp 77ms 2.8ms 3.2MB 130ms 0ms clang++ 11.0.0
cpp 7-m.cpp 77ms 1.9ms 3.2MB 127ms 0ms clang++ 11.0.0
cpp 7-m.cpp 79ms 2.3ms 1.0MB 133ms 0ms g++ 12.2.0
cpp 6-im.cpp 151ms 0.5ms 3.2MB 273ms 0ms clang++ 11.0.0
cpp 6-im.cpp 151ms 1.5ms 0.9MB 277ms 0ms g++ 12.2.0
csharp 3-m.cs 231ms 1.3ms 30.4MB 353ms 7ms dotnet 6.0.401
csharp 3-m.cs 802ms 1.9ms 29.5MB 1527ms 3ms mono 6.12.0