C# VS Nim benchmarks

Current benchmark data was generated on Sat Mar 29 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.)

binarytrees

Input: 18

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 1.cs 936ms 4.1ms 186.8MB 927ms 150ms dotnet 9.0.202
nim 2.nim 939ms 15ms 34.6MB 920ms 0ms nim 2.2.2
nim 2.nim 973ms 14ms 34.9MB 957ms 0ms nim/clang 2.2.2
csharp 1.cs 1043ms 56ms 186.1MB 1020ms 140ms dotnet/aot 9.0.202
csharp 1.cs 1768ms 82ms 102.0MB 1990ms 220ms mono 6.12.0

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 2.nim 89ms 2.5ms 5.5MB 80ms 0ms nim 2.2.2
nim 2.nim 92ms 1.1ms 5.9MB 80ms 0ms nim/clang 2.2.2
csharp 1.cs 121ms 1.8ms 32.6MB 83ms 33ms dotnet/aot 9.0.202
csharp 1.cs 152ms 5.0ms 44.1MB 130ms 13ms mono 6.12.0
csharp 1.cs 204ms 10ms 53.0MB 160ms 40ms dotnet 9.0.202

coro-prime-sieve

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 1-m.cs 2184ms 61ms 51.4MB 7633ms 77ms dotnet/aot 9.0.202
csharp 1-m.cs 2802ms 47ms 74.2MB 9787ms 97ms dotnet 9.0.202
nim 1.nim timeout 0.0ms 553.5MB 2477ms 2063ms nim 2.2.2
nim 1.nim timeout 0.0ms 559.8MB 2450ms 2083ms nim/clang 2.2.2

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 1-m.cs 151ms 2.8ms 18.2MB 453ms 13ms dotnet/aot 9.0.202
csharp 1-m.cs 273ms 15ms 36.9MB 770ms 20ms dotnet 9.0.202
nim 1.nim 4293ms 23ms 519.8MB 2077ms 1787ms nim/clang 2.2.2
nim 1.nim 4388ms 8.6ms 519.4MB 2163ms 1797ms nim 2.2.2

edigits

Input: 250001

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 1.cs 4107ms 11ms 18.3MB 4083ms 10ms dotnet/aot 9.0.202
csharp 1.cs 4975ms 8.9ms 37.5MB 4940ms 20ms dotnet 9.0.202

Input: 100000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 1.cs 678ms 1.2ms 14.5MB 660ms 7ms dotnet/aot 9.0.202
csharp 1.cs 864ms 7.8ms 34.0MB 840ms 13ms dotnet 9.0.202

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 5-m.cs 133ms 5.3ms 22.5MB 363ms 100ms dotnet/aot 9.0.202
nim 2.nim 188ms 1.4ms 1.5MB 177ms 0ms nim 2.2.2
csharp 5-m.cs 201ms 11ms 38.4MB 463ms 130ms dotnet 9.0.202
nim 2.nim 235ms 2.2ms 1.8MB 220ms 0ms nim/clang 2.2.2
csharp 5-m.cs 243ms 12ms 43.8MB 663ms 127ms mono 6.12.0
nim 1.nim 557ms 2.8ms 1.8MB 453ms 90ms nim/clang 2.2.2
nim 1.nim 578ms 2.2ms 1.5MB 467ms 97ms nim 2.2.2

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 2.nim 21ms 0.6ms 1.5MB 10ms 0ms nim 2.2.2
csharp 5-m.cs 24ms 0.9ms 15.5MB 33ms 17ms dotnet/aot 9.0.202
nim 2.nim 26ms 0.1ms 1.8MB 20ms 0ms nim/clang 2.2.2
nim 1.nim 59ms 1.1ms 1.8MB 40ms 7ms nim/clang 2.2.2
nim 1.nim 61ms 1.2ms 1.5MB 40ms 10ms nim 2.2.2
csharp 5-m.cs 64ms 4.1ms 37.1MB 87ms 13ms dotnet 9.0.202
csharp 5-m.cs 72ms 0.8ms 31.4MB 103ms 27ms mono 6.12.0

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 1.nim 1.1ms 0.1ms 1.5MB 0ms 0ms nim 2.2.2
nim 1.nim 1.2ms 0.1ms 1.9MB 0ms 0ms nim/clang 2.2.2
csharp 1.cs 9.1ms 3.9ms 9.8MB 0ms 0ms dotnet/aot 9.0.202
csharp 1.cs 31ms 1.0ms 21.3MB 20ms 0ms mono 6.12.0
csharp 1.cs 35ms 0.9ms 26.3MB 18ms 8ms dotnet 9.0.202

http-server

Input: 3000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 2-http2.cs 513ms 1.7ms 108.8MB 730ms 153ms dotnet 9.0.202
csharp 2-m.cs 584ms 28ms 137.0MB 737ms 523ms dotnet 9.0.202
csharp 2-http3.cs 680ms 12ms 145.9MB 1130ms 243ms dotnet 9.0.202
csharp 1-m.cs 740ms 18ms 170.5MB 1157ms 727ms dotnet 9.0.202

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 2-m.cs 361ms 3.7ms 87.3MB 390ms 197ms dotnet 9.0.202
csharp 1-m.cs 395ms 4.4ms 97.2MB 530ms 230ms dotnet 9.0.202
csharp 2-http2.cs 439ms 6.2ms 86.0MB 483ms 97ms dotnet 9.0.202
csharp 2-http3.cs 495ms 2.0ms 94.2MB 587ms 113ms dotnet 9.0.202

json-serde

Input: sample 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 2.cs 302ms 4.2ms 68.7MB 270ms 30ms dotnet 9.0.202
csharp 1.cs 774ms 76ms 143.4MB 790ms 80ms dotnet 9.0.202

Input: canada 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 2.cs 1491ms 6.1ms 234.1MB 1633ms 87ms dotnet 9.0.202
csharp 1.cs 2686ms 63ms 745.4MB 3240ms 437ms dotnet 9.0.202

knucleotide

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 6-m.cs 463ms 17ms 45.8MB 1233ms 20ms dotnet/aot 9.0.202
csharp 6-m.cs 754ms 25ms 68.0MB 2087ms 33ms dotnet 9.0.202
csharp 6-m.cs 1028ms 27ms 66.9MB 2970ms 20ms mono 6.12.0

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 6-m.cs 100ms 3.6ms 36.1MB 163ms 20ms dotnet/aot 9.0.202
csharp 6-m.cs 181ms 7.0ms 57.2MB 277ms 27ms dotnet 9.0.202
csharp 6-m.cs 199ms 1.7ms 58.1MB 380ms 17ms mono 6.12.0

lru

Input: 1000 1000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 2.cs 99ms 2.2ms 10.0MB 83ms 0ms dotnet/aot 9.0.202
nim 2.nim 112ms 2.2ms 1.4MB 103ms 0ms nim 2.2.2
nim 2.nim 113ms 2.4ms 1.6MB 103ms 0ms nim/clang 2.2.2
csharp 2.cs 148ms 2.5ms 21.1MB 137ms 0ms mono 6.12.0
csharp 2.cs 253ms 6.8ms 29.5MB 237ms 10ms dotnet 9.0.202
csharp 1.cs 1055ms 14ms 13.3MB 1030ms 10ms dotnet/aot 9.0.202
csharp 1.cs 1320ms 22ms 33.1MB 1303ms 13ms dotnet 9.0.202
csharp 1.cs 3366ms 16ms 45.5MB 3320ms 33ms mono 6.12.0
nim 1.nim timeout 0.0ms 1.3MB 4990ms 0ms nim 2.2.2
nim 1.nim timeout 0.0ms 1.5MB 4990ms 0ms nim/clang 2.2.2

Input: 1000 3000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 2.cs 272ms 3.2ms 10.0MB 257ms 0ms dotnet/aot 9.0.202
nim 2.nim 327ms 2.7ms 1.4MB 317ms 0ms nim 2.2.2
nim 2.nim 333ms 2.8ms 1.6MB 323ms 0ms nim/clang 2.2.2
csharp 2.cs 362ms 3.0ms 22.7MB 350ms 0ms mono 6.12.0
csharp 2.cs 400ms 1.6ms 29.4MB 380ms 10ms dotnet 9.0.202
csharp 1.cs 3130ms 20ms 13.3MB 3103ms 10ms dotnet/aot 9.0.202
csharp 1.cs 3642ms 24ms 32.9MB 3630ms 20ms dotnet 9.0.202
csharp 1.cs timeout 0.0ms 45.6MB 4947ms 47ms mono 6.12.0
nim 1.nim timeout 0.0ms 1.3MB 4990ms 0ms nim 2.2.2
nim 1.nim timeout 0.0ms 1.5MB 4990ms 0ms nim/clang 2.2.2

Input: 100 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 2.nim 50ms 1.0ms 1.3MB 40ms 0ms nim 2.2.2
nim 2.nim 50ms 1.3ms 1.5MB 40ms 0ms nim/clang 2.2.2
csharp 2.cs 53ms 1.2ms 9.9MB 40ms 0ms dotnet/aot 9.0.202
csharp 2.cs 93ms 2.5ms 23.2MB 80ms 0ms mono 6.12.0
csharp 2.cs 164ms 3.2ms 29.3MB 147ms 7ms dotnet 9.0.202
nim 1.nim 457ms 14ms 1.5MB 447ms 0ms nim/clang 2.2.2
nim 1.nim 485ms 9.7ms 1.3MB 477ms 0ms nim 2.2.2
csharp 1.cs 1626ms 6.1ms 32.8MB 1617ms 10ms dotnet 9.0.202
csharp 1.cs 1807ms 5.4ms 13.1MB 1790ms 0ms dotnet/aot 9.0.202
csharp 1.cs 1820ms 10ms 28.7MB 1807ms 0ms mono 6.12.0

mandelbrot

Input: 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 4.cs 343ms 12ms 37.3MB 317ms 10ms dotnet 9.0.202
nim 1.nim 388ms 1.1ms 4.7MB 380ms 0ms nim/clang 2.2.2
csharp 2.cs 519ms 26ms 39.6MB 497ms 10ms dotnet 9.0.202
nim 1.nim 576ms 1.1ms 4.4MB 570ms 0ms nim 2.2.2
csharp 1.cs 2081ms 46ms 36.4MB 2057ms 10ms dotnet 9.0.202
csharp 3.cs 2367ms 6.0ms 16.3MB 2353ms 0ms dotnet/aot 9.0.202
csharp 3.cs 2447ms 9.7ms 36.5MB 2423ms 10ms dotnet 9.0.202
csharp 1.cs 3956ms 79ms 16.4MB 3940ms 0ms dotnet/aot 9.0.202
csharp 1.cs timeout 0.0ms 23.2MB 4987ms 0ms mono 6.12.0

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 1.nim 19ms 0.5ms 1.9MB 10ms 0ms nim/clang 2.2.2
nim 1.nim 26ms 0.5ms 1.6MB 20ms 0ms nim 2.2.2
csharp 4.cs 79ms 2.3ms 34.4MB 60ms 10ms dotnet 9.0.202
csharp 3.cs 109ms 2.9ms 12.9MB 97ms 0ms dotnet/aot 9.0.202
csharp 2.cs 112ms 2.1ms 36.9MB 90ms 10ms dotnet 9.0.202
csharp 1.cs 137ms 0.2ms 33.8MB 120ms 10ms dotnet 9.0.202
csharp 3.cs 169ms 7.1ms 33.9MB 143ms 10ms dotnet 9.0.202
csharp 1.cs 176ms 4.5ms 13.3MB 160ms 0ms dotnet/aot 9.0.202
csharp 1.cs 567ms 2.4ms 23.9MB 550ms 0ms mono 6.12.0

merkletrees

Input: 17

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 1.nim 536ms 5.2ms 34.6MB 517ms 0ms nim 2.2.2
csharp 2.cs 566ms 6.2ms 123.7MB 513ms 90ms dotnet/aot 9.0.202
csharp 1.cs 603ms 14ms 150.0MB 553ms 120ms dotnet/aot 9.0.202
nim 1.nim 634ms 23ms 34.9MB 617ms 3ms nim/clang 2.2.2
csharp 2.cs 683ms 21ms 135.9MB 640ms 97ms dotnet 9.0.202
csharp 1.cs 780ms 24ms 163.5MB 717ms 137ms dotnet 9.0.202
csharp 1.cs 1338ms 54ms 140.0MB 1567ms 160ms mono 6.12.0

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 1.nim 117ms 2.6ms 9.6MB 103ms 0ms nim 2.2.2
nim 1.nim 136ms 2.3ms 9.9MB 120ms 0ms nim/clang 2.2.2
csharp 2.cs 138ms 6.8ms 57.0MB 110ms 30ms dotnet/aot 9.0.202
csharp 1.cs 154ms 7.0ms 74.7MB 117ms 53ms dotnet/aot 9.0.202
csharp 2.cs 258ms 1.2ms 74.8MB 233ms 37ms dotnet 9.0.202
csharp 1.cs 267ms 1.6ms 69.5MB 237ms 33ms mono 6.12.0
csharp 1.cs 285ms 10ms 91.3MB 237ms 67ms dotnet 9.0.202

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 2.nim 321ms 0.7ms 1.8MB 310ms 0ms nim 2.2.2
nim 2.nim 345ms 0.7ms 2.0MB 337ms 0ms nim/clang 2.2.2
csharp 9.cs 359ms 1.0ms 27.5MB 340ms 7ms dotnet 9.0.202
csharp 8.cs 372ms 0.3ms 9.8MB 360ms 0ms dotnet/aot 9.0.202
csharp 8.cs 427ms 7.6ms 27.6MB 403ms 7ms dotnet 9.0.202
csharp 8.cs 1248ms 2.7ms 20.8MB 1233ms 0ms mono 6.12.0

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 2.nim 35ms 0.6ms 1.8MB 30ms 0ms nim 2.2.2
nim 2.nim 43ms 4.9ms 2.0MB 33ms 0ms nim/clang 2.2.2
csharp 8.cs 47ms 1.0ms 9.9MB 33ms 0ms dotnet/aot 9.0.202
csharp 9.cs 92ms 0.8ms 27.6MB 73ms 3ms dotnet 9.0.202
csharp 8.cs 99ms 5.1ms 27.8MB 80ms 7ms dotnet 9.0.202
csharp 8.cs 165ms 1.1ms 22.5MB 150ms 0ms mono 6.12.0

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 1.nim 314ms 16ms 41.8MB 303ms 0ms nim/clang 2.2.2
nim 1.nim 316ms 3.7ms 41.5MB 303ms 0ms nim 2.2.2
csharp 1.cs 336ms 9.3ms 78.8MB 310ms 13ms dotnet/aot 9.0.202
csharp 1.cs 351ms 10ms 96.3MB 327ms 10ms dotnet 9.0.202
csharp 2.cs 398ms 5.1ms 35.6MB 377ms 7ms dotnet 9.0.202
csharp 2.cs 426ms 3.3ms 17.5MB 410ms 0ms dotnet/aot 9.0.202
csharp 1.cs 546ms 4.8ms 84.0MB 523ms 10ms mono 6.12.0
csharp 2.cs 1866ms 4.1ms 29.5MB 1850ms 0ms mono 6.12.0

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 1.nim 56ms 2.8ms 11.5MB 47ms 0ms nim 2.2.2
nim 1.nim 60ms 5.5ms 11.8MB 47ms 0ms nim/clang 2.2.2
csharp 1.cs 64ms 4.5ms 24.9MB 50ms 0ms dotnet/aot 9.0.202
csharp 1.cs 104ms 2.0ms 42.5MB 80ms 10ms dotnet 9.0.202
csharp 2.cs 108ms 1.7ms 11.9MB 93ms 0ms dotnet/aot 9.0.202
csharp 2.cs 127ms 1.3ms 29.9MB 110ms 7ms dotnet 9.0.202
csharp 1.cs 143ms 1.6ms 36.0MB 127ms 3ms mono 6.12.0
csharp 2.cs 483ms 2.3ms 21.1MB 467ms 0ms mono 6.12.0

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 1.cs 3225ms 18ms 13.9MB 3120ms 100ms dotnet/aot 9.0.202
csharp 1.cs 3546ms 1.9ms 38.0MB 3570ms 110ms dotnet 9.0.202

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 1.cs 759ms 2.6ms 13.4MB 720ms 27ms dotnet/aot 9.0.202
csharp 1.cs 983ms 4.6ms 37.9MB 1067ms 37ms dotnet 9.0.202

regex-redux

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 1.nim 1631ms 8.4ms 164.1MB 1603ms 10ms nim/clang 2.2.2
nim 1.nim 1689ms 6.4ms 163.9MB 1660ms 17ms nim 2.2.2
csharp 6.cs 1756ms 6.4ms 418.5MB 1660ms 147ms dotnet/aot 9.0.202
csharp 5.cs 2077ms 15ms 447.0MB 2130ms 187ms dotnet 9.0.202
csharp 6.cs 2732ms 45ms 438.4MB 2687ms 183ms dotnet 9.0.202
csharp 5.cs 4299ms 17ms 418.9MB 4193ms 153ms dotnet/aot 9.0.202

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 1.nim 172ms 3.9ms 18.3MB 160ms 0ms nim/clang 2.2.2
nim 1.nim 180ms 2.6ms 20.5MB 167ms 0ms nim 2.2.2
csharp 6.cs 190ms 3.8ms 47.6MB 163ms 17ms dotnet/aot 9.0.202
csharp 5.cs 292ms 5.1ms 72.7MB 263ms 30ms dotnet 9.0.202
csharp 6.cs 387ms 1.4ms 70.0MB 350ms 30ms dotnet 9.0.202
csharp 5.cs 441ms 5.4ms 47.3MB 420ms 20ms dotnet/aot 9.0.202

secp256k1

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 1.cs 2851ms 10.0ms 13.1MB 2817ms 20ms dotnet/aot 9.0.202
csharp 1.cs 2967ms 19ms 35.6MB 3027ms 43ms dotnet 9.0.202

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 1.cs 720ms 4.3ms 13.0MB 700ms 7ms dotnet/aot 9.0.202
csharp 1.cs 1005ms 7.9ms 35.8MB 1087ms 23ms dotnet 9.0.202

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 3-m.cs 1879ms 22ms 10.4MB 7240ms 10ms dotnet/aot 9.0.202
csharp 3-m.cs 1974ms 78ms 29.9MB 7297ms 17ms dotnet 9.0.202
nim 1.nim 3596ms 8.4ms 1.6MB 3587ms 0ms nim/clang 2.2.2
nim 1.nim 3599ms 8.1ms 1.4MB 3593ms 0ms nim 2.2.2
csharp 3-m.cs 4747ms 137ms 25.7MB 18010ms 23ms mono 6.12.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 3-m.cs 483ms 11ms 10.5MB 1800ms 7ms dotnet/aot 9.0.202
csharp 3-m.cs 534ms 1.3ms 29.9MB 1873ms 13ms dotnet 9.0.202
nim 1.nim 899ms 0.6ms 1.5MB 890ms 0ms nim/clang 2.2.2
nim 1.nim 902ms 2.3ms 1.3MB 890ms 0ms nim 2.2.2
csharp 3-m.cs 1230ms 55ms 25.6MB 4607ms 10ms mono 6.12.0

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 3-m.cs 128ms 0.7ms 10.5MB 447ms 7ms dotnet/aot 9.0.202
csharp 3-m.cs 183ms 7.9ms 28.3MB 503ms 10ms dotnet 9.0.202
nim 1.nim 227ms 0.5ms 1.5MB 220ms 0ms nim/clang 2.2.2
nim 1.nim 229ms 0.9ms 1.3MB 220ms 0ms nim 2.2.2
csharp 3-m.cs 354ms 10ms 24.9MB 1193ms 7ms mono 6.12.0