C++ VS C# benchmarks

Current benchmark data was generated on Wed Jan 22 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.)

fannkuch-redux

Input: 11

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
cpp 1-im.cpp 406ms 13ms 7.9MB 1557ms 7ms clang++ 14.0.0-1ubuntu1.1
cpp 1-im.cpp 407ms 4.6ms 4.7MB 1547ms 0ms g++ 11.4.0

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
cpp 1-im.cpp 42ms 1.3ms 7.9MB 127ms 0ms clang++ 14.0.0-1ubuntu1.1
cpp 1-im.cpp 43ms 0.7ms 4.7MB 140ms 0ms g++ 11.4.0

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
cpp 1.cpp 1.0ms 0.0ms 1.4MB 0ms 0ms g++ 11.4.0
cpp 1.cpp 1.5ms 0.1ms 2.3MB 0ms 0ms clang++ 14.0.0-1ubuntu1.1
csharp 1.cs 18ms 10ms 12.5MB 0ms 0ms dotnet/aot 9.0.102
csharp 1.cs 31ms 0.2ms 23.3MB 22ms 0ms mono 6.12.0
csharp 1.cs 35ms 0.3ms 30.3MB 16ms 4ms dotnet 9.0.102

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
cpp 0-i.cpp 166ms 0.1ms 1.5MB 160ms 0ms g++ 11.4.0
cpp 0-i.cpp 170ms 0.6ms 2.3MB 160ms 0ms clang++ 14.0.0-1ubuntu1.1
cpp 1.cpp 313ms 1.7ms 1.8MB 303ms 0ms g++ 11.4.0
cpp 1.cpp 313ms 1.0ms 2.3MB 300ms 0ms clang++ 14.0.0-1ubuntu1.1
csharp 9.cs 360ms 2.4ms 34.2MB 340ms 10ms dotnet 9.0.102
csharp 8.cs 370ms 0.4ms 15.7MB 357ms 0ms dotnet/aot 9.0.102
csharp 8.cs 418ms 0.9ms 33.8MB 393ms 10ms dotnet 9.0.102
csharp 8.cs 1246ms 5.3ms 22.4MB 1230ms 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 19ms 0.1ms 1.5MB 10ms 0ms g++ 11.4.0
cpp 0-i.cpp 19ms 0.2ms 2.3MB 10ms 0ms clang++ 14.0.0-1ubuntu1.1
cpp 1.cpp 34ms 0.6ms 2.3MB 27ms 0ms clang++ 14.0.0-1ubuntu1.1
cpp 1.cpp 34ms 0.8ms 1.8MB 23ms 0ms g++ 11.4.0
csharp 8.cs 46ms 1.7ms 16.0MB 30ms 0ms dotnet/aot 9.0.102
csharp 9.cs 92ms 1.1ms 34.0MB 77ms 0ms dotnet 9.0.102
csharp 8.cs 105ms 9.8ms 34.0MB 73ms 10ms dotnet 9.0.102
csharp 8.cs 162ms 2.1ms 26.3MB 147ms 3ms mono 6.12.0

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 1.cs 308ms 4.3ms 54.8MB 287ms 10ms dotnet/aot 9.0.102
csharp 1.cs 349ms 1.7ms 70.4MB 323ms 10ms dotnet 9.0.102
csharp 2.cs 396ms 1.6ms 19.9MB 380ms 3ms dotnet/aot 9.0.102
csharp 2.cs 400ms 11ms 38.9MB 370ms 10ms dotnet 9.0.102
cpp 1.cpp 483ms 3.5ms 7.3MB 470ms 0ms g++ 11.4.0
cpp 1.cpp 526ms 1.4ms 7.7MB 513ms 0ms clang++ 14.0.0-1ubuntu1.1
csharp 1.cs 535ms 6.8ms 86.0MB 507ms 10ms mono 6.12.0
csharp 2.cs 1874ms 13ms 31.5MB 1860ms 0ms mono 6.12.0

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 1.cs 65ms 0.2ms 27.5MB 50ms 3ms dotnet/aot 9.0.102
csharp 1.cs 98ms 1.1ms 45.5MB 73ms 10ms dotnet 9.0.102
csharp 2.cs 102ms 0.7ms 17.8MB 87ms 3ms dotnet/aot 9.0.102
cpp 1.cpp 121ms 3.9ms 3.6MB 107ms 0ms g++ 11.4.0
csharp 2.cs 130ms 1.9ms 36.2MB 107ms 7ms dotnet 9.0.102
cpp 1.cpp 132ms 1.8ms 4.0MB 123ms 0ms clang++ 14.0.0-1ubuntu1.1
csharp 1.cs 144ms 1.5ms 40.3MB 127ms 7ms mono 6.12.0
csharp 2.cs 484ms 8.1ms 24.9MB 463ms 3ms mono 6.12.0

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
cpp 8-m.cpp 471ms 6.8ms 7.6MB 1820ms 0ms clang++ 14.0.0-1ubuntu1.1
cpp 8-m.cpp 488ms 8.2ms 4.2MB 1883ms 0ms g++ 11.4.0
cpp 6-im.cpp 920ms 3.4ms 7.4MB 3587ms 7ms clang++ 14.0.0-1ubuntu1.1
cpp 6-im.cpp 925ms 1.0ms 4.2MB 3613ms 0ms g++ 11.4.0
csharp 3-m.cs 1873ms 37ms 18.4MB 7180ms 7ms dotnet/aot 9.0.102
csharp 3-m.cs 1971ms 75ms 38.1MB 7220ms 13ms dotnet 9.0.102
csharp 3-m.cs 4634ms 249ms 30.7MB 17543ms 10ms mono 6.12.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
cpp 8-m.cpp 129ms 6.4ms 7.4MB 460ms 3ms clang++ 14.0.0-1ubuntu1.1
cpp 8-m.cpp 129ms 0.3ms 4.1MB 477ms 0ms g++ 11.4.0
cpp 6-im.cpp 244ms 4.5ms 4.2MB 917ms 0ms g++ 11.4.0
cpp 6-im.cpp 246ms 5.8ms 7.3MB 917ms 0ms clang++ 14.0.0-1ubuntu1.1
csharp 3-m.cs 476ms 1.6ms 18.2MB 1790ms 10ms dotnet/aot 9.0.102
csharp 3-m.cs 542ms 12ms 39.9MB 1870ms 10ms dotnet 9.0.102
csharp 3-m.cs 1203ms 18ms 31.0MB 4483ms 7ms mono 6.12.0

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
cpp 8-m.cpp 40ms 1.9ms 7.4MB 110ms 0ms clang++ 14.0.0-1ubuntu1.1
cpp 8-m.cpp 40ms 0.7ms 4.0MB 127ms 0ms g++ 11.4.0
cpp 6-im.cpp 67ms 0.7ms 7.1MB 227ms 0ms clang++ 14.0.0-1ubuntu1.1
cpp 6-im.cpp 68ms 0.6ms 4.0MB 240ms 0ms g++ 11.4.0
csharp 3-m.cs 129ms 1.0ms 18.4MB 440ms 7ms dotnet/aot 9.0.102
csharp 3-m.cs 193ms 15ms 36.4MB 497ms 10ms dotnet 9.0.102
csharp 3-m.cs 348ms 2.4ms 26.4MB 1160ms 7ms mono 6.12.0