Ocaml VS C# benchmarks

Current benchmark data was generated on Wed May 25 2022, full log can be found HERE

CONTRIBUTIONS are WELCOME!

[x86_64][2 cores] Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz (Model 85)

* -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 1595ms 35ms 305.1MB 1500ms 147ms dotnet 6.0.300
csharp 1.cs 2472ms 34ms 107.8MB 2887ms 257ms mono 6.12.0
ocaml 1.ml 4123ms 259ms 120.7MB 4060ms 43ms ocaml 4.14.0

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 1.cs 164ms 1.0ms 44.7MB 137ms 13ms mono 6.12.0
csharp 1.cs 193ms 1.5ms 77.6MB 143ms 23ms dotnet 6.0.300
ocaml 1.ml 285ms 2.1ms 17.4MB 267ms 3ms ocaml 4.14.0

fannkuch-redux

Input: 11

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ocaml 2.ml 3161ms 11ms 2.6MB 3147ms 0ms ocaml 4.14.0

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ocaml 2.ml 262ms 0.5ms 2.5MB 250ms 0ms ocaml 4.14.0

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ocaml 6.ml 357ms 26ms 25.6MB 340ms 3ms ocaml 4.14.0
csharp 5-m.cs 401ms 20ms 91.1MB 600ms 93ms dotnet 6.0.300
csharp 5-m.cs 528ms 11ms 34.3MB 877ms 113ms mono 6.12.0

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ocaml 6.ml 43ms 0.5ms 4.9MB 30ms 0ms ocaml 4.14.0
csharp 5-m.cs 98ms 9.7ms 34.6MB 113ms 37ms mono 6.12.0
csharp 5.cs 100ms 11ms 40.3MB 77ms 37ms dotnet 6.0.300

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ocaml 1.ml 2.3ms 0.4ms 2.9MB 0ms 0ms ocaml 4.14.0
csharp 1.cs 22ms 0.9ms 25.8MB 10ms 0ms mono 6.12.0
csharp 1.cs 52ms 6.4ms 29.0MB 20ms 4ms dotnet 6.0.300

lru

Input: 1000 1000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 2.cs 197ms 1.2ms 27.4MB 183ms 0ms mono 6.12.0
ocaml 1.ml 203ms 0.4ms 5.8MB 190ms 0ms ocaml 4.14.0
csharp 2.cs 210ms 0.9ms 27.7MB 173ms 0ms dotnet 6.0.300
csharp 1.cs 1575ms 7.0ms 75.7MB 1540ms 20ms dotnet 6.0.300
csharp 1.cs 3411ms 3.0ms 47.7MB 3360ms 43ms mono 6.12.0

Input: 1000 3000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 2.cs 464ms 4.2ms 28.0MB 437ms 7ms dotnet 6.0.300
csharp 2.cs 526ms 3.2ms 26.0MB 510ms 0ms mono 6.12.0
ocaml 1.ml 627ms 47ms 5.9MB 610ms 0ms ocaml 4.14.0
csharp 1.cs timeout 0.0ms 0.0MB 0ms 0ms dotnet 6.0.300
csharp 1.cs timeout 0.0ms 0.0MB 0ms 0ms mono 6.12.0

Input: 100 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ocaml 1.ml 91ms 0.4ms 5.1MB 80ms 0ms ocaml 4.14.0
csharp 2.cs 112ms 0.8ms 27.2MB 97ms 0ms mono 6.12.0
csharp 2.cs 132ms 3.8ms 25.9MB 97ms 7ms dotnet 6.0.300
csharp 1.cs 4345ms 104ms 62.0MB 4307ms 27ms dotnet 6.0.300
csharp 1.cs 4416ms 309ms 32.3MB 4393ms 10ms mono 6.12.0

merkletrees

Input: 17

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 2.cs 1061ms 2.4ms 388.0MB 937ms 167ms dotnet 6.0.300
csharp 1.cs 1098ms 27ms 305.2MB 957ms 170ms dotnet 6.0.300
ocaml 1.ml 1709ms 12ms 62.6MB 1673ms 17ms ocaml 4.14.0
csharp 1.cs 1920ms 11ms 147.1MB 2480ms 123ms mono 6.12.0
ocaml 2.ml 2842ms 3.0ms 71.2MB 2803ms 20ms ocaml 4.14.0

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ocaml 1.ml 205ms 0.5ms 18.6MB 180ms 10ms ocaml 4.14.0
csharp 2.cs 308ms 5.3ms 135.0MB 213ms 70ms dotnet 6.0.300
csharp 1.cs 323ms 1.1ms 164.5MB 227ms 80ms dotnet 6.0.300
csharp 1.cs 346ms 0.7ms 74.4MB 317ms 47ms mono 6.12.0
ocaml 2.ml 460ms 5.6ms 25.2MB 440ms 3ms ocaml 4.14.0

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 9.cs 443ms 4.3ms 31.2MB 410ms 3ms dotnet 6.0.300
ocaml 1.ml 526ms 39ms 2.4MB 513ms 0ms ocaml 4.14.0
csharp 8.cs 618ms 8.4ms 27.2MB 583ms 7ms dotnet 6.0.300
csharp 8.cs 1298ms 29ms 25.0MB 1280ms 0ms mono 6.12.0

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ocaml 1.ml 59ms 0.6ms 2.6MB 50ms 0ms ocaml 4.14.0
csharp 9.cs 96ms 3.5ms 27.2MB 60ms 0ms dotnet 6.0.300
csharp 8.cs 112ms 7.1ms 29.1MB 83ms 0ms dotnet 6.0.300
csharp 8.cs 147ms 9.2ms 25.0MB 133ms 0ms mono 6.12.0

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 2.cs 1007ms 64ms 42.1MB 973ms 3ms dotnet 6.0.300
csharp 1.cs 1293ms 32ms 96.5MB 1240ms 27ms dotnet 6.0.300
csharp 1.cs 1450ms 53ms 86.6MB 1417ms 20ms mono 6.12.0
ocaml 2.ml 2591ms 2.3ms 19.8MB 2577ms 3ms ocaml 4.14.0
csharp 2.cs 2628ms 182ms 32.4MB 2617ms 0ms mono 6.12.0
ocaml 1.ml 3328ms 22ms 555.2MB 3160ms 150ms ocaml 4.14.0

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 1.cs 183ms 2.0ms 48.7MB 143ms 13ms dotnet 6.0.300
csharp 1.cs 199ms 1.6ms 42.6MB 180ms 3ms mono 6.12.0
csharp 2.cs 310ms 2.5ms 31.6MB 270ms 10ms dotnet 6.0.300
ocaml 2.ml 612ms 2.4ms 8.9MB 593ms 0ms ocaml 4.14.0
csharp 2.cs 612ms 0.3ms 26.1MB 600ms 0ms mono 6.12.0
ocaml 1.ml 678ms 11ms 142.5MB 630ms 30ms ocaml 4.14.0

regex-redux

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 5.cs 2913ms 188ms 589.8MB 2837ms 267ms dotnet 7.0.100
csharp 5p.cs 3745ms 33ms 591.6MB 3603ms 257ms dotnet 7.0.100
csharp 5.cs 3954ms 237ms 522.8MB 3853ms 243ms dotnet 6.0.300
ocaml 2.ml timeout 0.0ms 0.0MB 0ms 0ms ocaml 4.14.0

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 5.cs 455ms 7.3ms 168.0MB 390ms 50ms dotnet 7.0.100
csharp 5p.cs 494ms 19ms 162.0MB 423ms 53ms dotnet 7.0.100
csharp 5.cs 537ms 6.2ms 89.3MB 483ms 43ms dotnet 6.0.300
ocaml 2.ml 667ms 1.2ms 50.3MB 630ms 20ms ocaml 4.14.0

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 3-m.cs 2478ms 3.8ms 29.7MB 4743ms 17ms dotnet 6.0.300
csharp 3.cs timeout 0.0ms 0.0MB 0ms 0ms mono 6.12.0
ocaml 2.ml timeout 0.0ms 0.0MB 0ms 0ms ocaml 4.14.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 3-m.cs 686ms 0.7ms 30.1MB 1230ms 10ms dotnet 6.0.300
ocaml 2.ml 1344ms 0.8ms 3.4MB 1330ms 0ms ocaml 4.14.0
csharp 3-m.cs 2554ms 15ms 27.7MB 4747ms 3ms mono 6.12.0

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 3-m.cs 227ms 5.2ms 27.3MB 337ms 7ms dotnet 6.0.300
ocaml 2.ml 385ms 0.1ms 3.1MB 373ms 0ms ocaml 4.14.0
csharp 3-m.cs 662ms 0.1ms 29.7MB 1207ms 0ms mono 6.12.0