C++ VS C# benchmarks

Current benchmark data was generated on Thu May 01 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 397ms 5.7ms 2.6MB 1537ms 0ms g++ 11.4.0
cpp 1-im.cpp 406ms 9.6ms 3.9MB 1573ms 0ms clang++ 14.0.0-1ubuntu1.1

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
cpp 1-im.cpp 41ms 2.8ms 4.0MB 133ms 0ms clang++ 14.0.0-1ubuntu1.1
cpp 1-im.cpp 41ms 4.6ms 2.6MB 137ms 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 10ms 5.6ms 7.6MB 0ms 0ms dotnet/aot 9.0.203
csharp 1.cs 31ms 1.0ms 21.4MB 20ms 0ms mono 6.12.0
csharp 1.cs 34ms 0.4ms 26.0MB 20ms 2ms dotnet 9.0.203

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
cpp 0-i.cpp 167ms 0.2ms 1.5MB 160ms 0ms g++ 11.4.0
cpp 0-i.cpp 171ms 0.3ms 2.3MB 160ms 0ms clang++ 14.0.0-1ubuntu1.1
cpp 1.cpp 314ms 0.8ms 2.3MB 307ms 0ms clang++ 14.0.0-1ubuntu1.1
cpp 1.cpp 315ms 2.0ms 1.8MB 303ms 0ms g++ 11.4.0
csharp 9.cs 358ms 2.8ms 28.0MB 340ms 7ms dotnet 9.0.203
csharp 8.cs 370ms 3.1ms 9.9MB 360ms 0ms dotnet/aot 9.0.203
csharp 8.cs 423ms 3.6ms 27.5MB 400ms 7ms dotnet 9.0.203
csharp 8.cs 1250ms 5.1ms 20.4MB 1237ms 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 18ms 0.0ms 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.3ms 2.3MB 27ms 0ms clang++ 14.0.0-1ubuntu1.1
cpp 1.cpp 34ms 0.9ms 1.9MB 30ms 0ms g++ 11.4.0
csharp 8.cs 46ms 1.1ms 9.9MB 37ms 0ms dotnet/aot 9.0.203
csharp 9.cs 90ms 1.4ms 27.6MB 73ms 3ms dotnet 9.0.203
csharp 8.cs 94ms 1.2ms 27.5MB 80ms 3ms dotnet 9.0.203
csharp 8.cs 164ms 3.9ms 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
csharp 1.cs 310ms 3.9ms 78.9MB 290ms 10ms dotnet/aot 9.0.203
csharp 1.cs 355ms 2.4ms 96.3MB 330ms 13ms dotnet 9.0.203
csharp 2.cs 393ms 1.8ms 17.4MB 377ms 0ms dotnet/aot 9.0.203
csharp 2.cs 397ms 1.9ms 35.6MB 380ms 7ms dotnet 9.0.203
cpp 1.cpp 487ms 2.7ms 7.3MB 480ms 0ms g++ 11.4.0
cpp 1.cpp 531ms 3.0ms 7.8MB 520ms 0ms clang++ 14.0.0-1ubuntu1.1
csharp 1.cs 550ms 8.4ms 84.0MB 527ms 10ms mono 6.12.0
csharp 2.cs 1862ms 2.9ms 27.5MB 1847ms 0ms mono 6.12.0

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 1.cs 64ms 3.2ms 24.8MB 50ms 7ms dotnet/aot 9.0.203
csharp 1.cs 100ms 1.2ms 42.3MB 80ms 7ms dotnet 9.0.203
csharp 2.cs 101ms 1.3ms 11.9MB 90ms 0ms dotnet/aot 9.0.203
cpp 1.cpp 120ms 1.9ms 3.6MB 110ms 0ms g++ 11.4.0
csharp 2.cs 127ms 1.0ms 30.1MB 103ms 10ms dotnet 9.0.203
cpp 1.cpp 131ms 2.1ms 4.1MB 120ms 0ms clang++ 14.0.0-1ubuntu1.1
csharp 1.cs 146ms 1.7ms 38.2MB 130ms 7ms mono 6.12.0
csharp 2.cs 483ms 5.4ms 23.0MB 470ms 0ms 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 469ms 2.7ms 3.4MB 1823ms 0ms clang++ 14.0.0-1ubuntu1.1
cpp 8-m.cpp 504ms 36ms 2.1MB 1933ms 0ms g++ 11.4.0
cpp 6-im.cpp 919ms 0.8ms 3.4MB 3610ms 0ms clang++ 14.0.0-1ubuntu1.1
cpp 6-im.cpp 921ms 0.4ms 2.3MB 3627ms 0ms g++ 11.4.0
csharp 3-m.cs 1857ms 0.8ms 10.5MB 7263ms 10ms dotnet/aot 9.0.203
csharp 3-m.cs 1927ms 7.1ms 30.0MB 7350ms 17ms dotnet 9.0.203
csharp 3-m.cs 4664ms 7.4ms 25.5MB 18030ms 17ms mono 6.12.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
cpp 8-m.cpp 124ms 1.3ms 3.4MB 460ms 0ms clang++ 14.0.0-1ubuntu1.1
cpp 8-m.cpp 128ms 0.2ms 2.0MB 480ms 0ms g++ 11.4.0
cpp 6-im.cpp 238ms 1.7ms 3.4MB 907ms 0ms clang++ 14.0.0-1ubuntu1.1
cpp 6-im.cpp 240ms 4.3ms 2.1MB 917ms 0ms g++ 11.4.0
csharp 3-m.cs 473ms 1.1ms 10.4MB 1810ms 0ms dotnet/aot 9.0.203
csharp 3-m.cs 536ms 6.8ms 29.8MB 1880ms 10ms dotnet 9.0.203
csharp 3-m.cs 1213ms 6.5ms 25.6MB 4547ms 10ms mono 6.12.0

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
cpp 8-m.cpp 39ms 0.1ms 2.0MB 130ms 0ms g++ 11.4.0
cpp 8-m.cpp 40ms 8.1ms 3.5MB 117ms 0ms clang++ 14.0.0-1ubuntu1.1
cpp 6-im.cpp 67ms 0.1ms 2.1MB 240ms 0ms g++ 11.4.0
cpp 6-im.cpp 68ms 4.7ms 3.3MB 230ms 0ms clang++ 14.0.0-1ubuntu1.1
csharp 3-m.cs 127ms 1.6ms 10.5MB 450ms 0ms dotnet/aot 9.0.203
csharp 3-m.cs 181ms 4.2ms 28.5MB 503ms 10ms dotnet 9.0.203
csharp 3-m.cs 353ms 13ms 25.5MB 1193ms 10ms mono 6.12.0