Perl VS C# benchmarks

Current benchmark data was generated on Tue Apr 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.)

binarytrees

Input: 18

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 1.cs 948ms 4.4ms 196.3MB 950ms 160ms dotnet 9.0.202
csharp 1.cs 1012ms 10ms 166.5MB 1010ms 130ms dotnet/aot 9.0.202
csharp 1.cs 1761ms 69ms 101.3MB 1963ms 233ms mono 6.12.0
perl 1.pl timeout 0.0ms 77.8MB 4957ms 30ms perl 5.40.1

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 1.cs 133ms 8.6ms 32.6MB 87ms 33ms dotnet/aot 9.0.202
csharp 1.cs 149ms 2.7ms 44.2MB 127ms 10ms mono 6.12.0
csharp 1.cs 202ms 7.8ms 51.2MB 160ms 37ms dotnet 9.0.202
perl 1.pl 1821ms 7.9ms 14.4MB 1807ms 0ms perl 5.40.1

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 5-m.cs 128ms 3.9ms 25.0MB 347ms 97ms dotnet/aot 9.0.202
csharp 5-m.cs 194ms 5.8ms 38.8MB 470ms 120ms dotnet 9.0.202
csharp 5-m.cs 253ms 7.3ms 45.3MB 683ms 137ms mono 6.12.0
perl 1.pl 3620ms 21ms 10.9MB 3607ms 0ms perl 5.40.1

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 5-m.cs 25ms 0.3ms 16.0MB 33ms 13ms dotnet/aot 9.0.202
csharp 5-m.cs 63ms 3.1ms 37.1MB 87ms 20ms dotnet 9.0.202
csharp 5-m.cs 73ms 2.6ms 32.0MB 103ms 23ms mono 6.12.0
perl 1.pl 371ms 2.6ms 6.6MB 360ms 0ms perl 5.40.1

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
perl 1.pl 2.7ms 0.2ms 5.3MB 0ms 0ms perl 5.40.1
csharp 1.cs 10.0ms 3.3ms 9.4MB 0ms 0ms dotnet/aot 9.0.202
csharp 1.cs 31ms 0.8ms 21.3MB 20ms 0ms mono 6.12.0
csharp 1.cs 36ms 0.4ms 26.3MB 20ms 6ms dotnet 9.0.202

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 9.cs 363ms 4.2ms 27.6MB 343ms 3ms dotnet 9.0.202
csharp 8.cs 373ms 1.9ms 9.9MB 360ms 0ms dotnet/aot 9.0.202
csharp 8.cs 421ms 0.6ms 27.6MB 400ms 10ms dotnet 9.0.202
csharp 8.cs 1251ms 3.3ms 22.1MB 1233ms 0ms mono 6.12.0
perl 2.pl timeout 0.0ms 6.1MB 4990ms 0ms perl 5.40.1

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 8.cs 45ms 1.4ms 9.9MB 30ms 0ms dotnet/aot 9.0.202
csharp 9.cs 95ms 3.9ms 27.8MB 73ms 10ms dotnet 9.0.202
csharp 8.cs 95ms 0.2ms 27.6MB 77ms 10ms dotnet 9.0.202
csharp 8.cs 165ms 1.8ms 22.4MB 153ms 0ms mono 6.12.0
perl 2.pl 2724ms 26ms 6.1MB 2713ms 0ms perl 5.40.1

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 3-m.cs 1864ms 3.2ms 10.6MB 7257ms 10ms dotnet/aot 9.0.202
csharp 3-m.cs 2008ms 131ms 30.1MB 7223ms 17ms dotnet 9.0.202
csharp 3-m.cs 4633ms 30ms 24.9MB 17887ms 23ms mono 6.12.0
perl 4.pl timeout 0.0ms 9.9MB 19727ms 10ms perl 5.40.1

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 3-m.cs 477ms 1.9ms 10.3MB 1807ms 3ms dotnet/aot 9.0.202
csharp 3-m.cs 535ms 1.5ms 30.0MB 1870ms 17ms dotnet 9.0.202
csharp 3-m.cs 1312ms 112ms 24.4MB 4640ms 13ms mono 6.12.0
perl 4.pl timeout 0.0ms 10.1MB 19560ms 10ms perl 5.40.1

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 3-m.cs 129ms 1.2ms 10.6MB 447ms 3ms dotnet/aot 9.0.202
csharp 3-m.cs 178ms 1.4ms 28.3MB 507ms 10ms dotnet 9.0.202
csharp 3-m.cs 348ms 2.9ms 25.6MB 1167ms 10ms mono 6.12.0
perl 4-m.pl 3427ms 15ms 9.4MB 13227ms 3ms perl 5.40.1