C++ VS C# benchmarks

Current benchmark data was generated on Tue Jul 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 395ms 6.0ms 2.5MB 1533ms 0ms g++ 11.4.0
cpp 1-im.cpp 397ms 1.4ms 4.0MB 1540ms 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 40ms 0.6ms 4.0MB 133ms 0ms clang++ 14.0.0-1ubuntu1.1
cpp 1-im.cpp 41ms 1.8ms 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.1ms 1.4MB 0ms 0ms g++ 11.4.0
cpp 1.cpp 1.3ms 0.1ms 2.3MB 0ms 0ms clang++ 14.0.0-1ubuntu1.1
csharp 1.cs 6.3ms 0.3ms 8.3MB 0ms 0ms dotnet/aot 9.0.301
csharp 1.cs 32ms 1.0ms 21.2MB 20ms 0ms mono 6.12.0
csharp 1.cs 38ms 1.2ms 26.3MB 20ms 4ms dotnet 9.0.301

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
cpp 0-i.cpp 167ms 0.3ms 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 1.2ms 1.8MB 307ms 0ms g++ 11.4.0
cpp 1.cpp 315ms 0.6ms 2.3MB 310ms 0ms clang++ 14.0.0-1ubuntu1.1
csharp 9.cs 365ms 5.3ms 27.6MB 343ms 10ms dotnet 9.0.301
csharp 8.cs 373ms 3.5ms 9.8MB 360ms 0ms dotnet/aot 9.0.301
csharp 8.cs 425ms 6.0ms 27.6MB 410ms 7ms dotnet 9.0.301
csharp 8.cs 1248ms 2.0ms 20.3MB 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 18ms 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.4ms 1.9MB 30ms 0ms g++ 11.4.0
cpp 1.cpp 34ms 0.6ms 2.3MB 30ms 0ms clang++ 14.0.0-1ubuntu1.1
csharp 8.cs 46ms 1.5ms 9.9MB 30ms 0ms dotnet/aot 9.0.301
csharp 8.cs 97ms 3.2ms 27.5MB 77ms 7ms dotnet 9.0.301
csharp 9.cs 99ms 5.9ms 27.9MB 73ms 10ms dotnet 9.0.301
csharp 8.cs 168ms 3.1ms 22.4MB 153ms 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 361ms 7.5ms 96.3MB 333ms 17ms dotnet 9.0.301
csharp 1.cs 379ms 11ms 78.8MB 360ms 7ms dotnet/aot 9.0.301
csharp 2.cs 399ms 4.3ms 35.7MB 377ms 10ms dotnet 9.0.301
csharp 2.cs 423ms 2.5ms 17.5MB 410ms 0ms dotnet/aot 9.0.301
cpp 1.cpp 488ms 2.4ms 7.2MB 480ms 0ms g++ 11.4.0
cpp 1.cpp 530ms 1.9ms 7.7MB 520ms 0ms clang++ 14.0.0-1ubuntu1.1
csharp 1.cs 584ms 14ms 83.9MB 560ms 10ms mono 6.12.0
csharp 2.cs 1886ms 26ms 29.8MB 1870ms 3ms mono 6.12.0

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 1.cs 65ms 1.9ms 24.8MB 50ms 0ms dotnet/aot 9.0.301
csharp 1.cs 104ms 4.5ms 42.6MB 80ms 10ms dotnet 9.0.301
csharp 2.cs 110ms 2.4ms 12.1MB 100ms 0ms dotnet/aot 9.0.301
cpp 1.cpp 121ms 1.6ms 3.6MB 110ms 0ms g++ 11.4.0
csharp 2.cs 129ms 3.8ms 30.1MB 110ms 7ms dotnet 9.0.301
cpp 1.cpp 133ms 0.4ms 4.0MB 120ms 0ms clang++ 14.0.0-1ubuntu1.1
csharp 1.cs 148ms 0.4ms 36.3MB 130ms 7ms mono 6.12.0
csharp 2.cs 487ms 4.8ms 21.1MB 473ms 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 467ms 0.8ms 3.4MB 1817ms 0ms clang++ 14.0.0-1ubuntu1.1
cpp 8-m.cpp 482ms 0.4ms 2.1MB 1880ms 0ms g++ 11.4.0
cpp 6-im.cpp 918ms 0.6ms 3.4MB 3613ms 0ms clang++ 14.0.0-1ubuntu1.1
cpp 6-im.cpp 921ms 1.9ms 2.1MB 3627ms 0ms g++ 11.4.0
csharp 3-m.cs 1871ms 1.6ms 10.5MB 7320ms 3ms dotnet/aot 9.0.301
csharp 3-m.cs 1923ms 1.9ms 30.0MB 7370ms 10ms dotnet 9.0.301
csharp 3-m.cs 4682ms 158ms 27.7MB 17883ms 23ms mono 6.12.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
cpp 8-m.cpp 125ms 2.9ms 3.4MB 463ms 0ms clang++ 14.0.0-1ubuntu1.1
cpp 8-m.cpp 129ms 0.3ms 2.0MB 480ms 0ms g++ 11.4.0
cpp 6-im.cpp 240ms 2.4ms 2.0MB 913ms 0ms g++ 11.4.0
cpp 6-im.cpp 248ms 20ms 3.4MB 927ms 0ms clang++ 14.0.0-1ubuntu1.1
csharp 3-m.cs 488ms 17ms 10.5MB 1800ms 0ms dotnet/aot 9.0.301
csharp 3-m.cs 632ms 70ms 29.9MB 1737ms 20ms dotnet 9.0.301
csharp 3-m.cs 1186ms 38ms 25.3MB 4467ms 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 39ms 0.6ms 2.0MB 130ms 0ms g++ 11.4.0
cpp 8-m.cpp 40ms 7.9ms 3.5MB 117ms 0ms clang++ 14.0.0-1ubuntu1.1
cpp 6-im.cpp 64ms 0.4ms 3.4MB 223ms 0ms clang++ 14.0.0-1ubuntu1.1
cpp 6-im.cpp 69ms 3.9ms 2.3MB 247ms 0ms g++ 11.4.0
csharp 3-m.cs 136ms 11ms 10.5MB 447ms 7ms dotnet/aot 9.0.301
csharp 3-m.cs 252ms 16ms 28.8MB 463ms 13ms dotnet 9.0.301
csharp 3-m.cs 345ms 3.8ms 27.6MB 1160ms 10ms mono 6.12.0