OCaml VS C# benchmarks

Current benchmark data was generated on Thu May 04 2023, 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 1474ms 36ms 309.1MB 1380ms 177ms dotnet/aot 7.0.203
csharp 1.cs 1652ms 19ms 357.4MB 1500ms 220ms dotnet 7.0.203
csharp 1.cs 2381ms 20ms 104.3MB 2803ms 233ms mono 6.12.0
ocaml 1.ml timeout 0.0ms 145.4MB 4903ms 73ms ocaml 5.0.0

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 1.cs 145ms 3.3ms 61.4MB 117ms 23ms dotnet/aot 7.0.203
csharp 1.cs 163ms 0.5ms 46.1MB 147ms 7ms mono 6.12.0
csharp 1.cs 253ms 4.2ms 83.2MB 197ms 33ms dotnet 7.0.203
ocaml 1.ml 359ms 8.8ms 22.9MB 337ms 7ms ocaml 5.0.0

fannkuch-redux

Input: 11

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ocaml 2.ml 3637ms 2.2ms 2.7MB 3620ms 0ms ocaml 5.0.0

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ocaml 2.ml 303ms 0.9ms 2.8MB 290ms 0ms ocaml 5.0.0

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 5-m.cs 324ms 25ms 58.5MB 493ms 113ms dotnet/aot 7.0.203
ocaml 6.ml 387ms 4.7ms 22.7MB 360ms 7ms ocaml 5.0.0
csharp 5-m.cs 443ms 11ms 69.5MB 673ms 113ms dotnet 7.0.203
csharp 5-m.cs 525ms 16ms 65.9MB 870ms 117ms mono 6.12.0

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ocaml 6.ml 42ms 0.4ms 4.9MB 30ms 0ms ocaml 5.0.0
csharp 5.cs 60ms 9.9ms 22.3MB 63ms 23ms dotnet/aot 7.0.203
csharp 5-m.cs 103ms 13ms 37.5MB 130ms 27ms mono 6.12.0
csharp 5.cs 112ms 1.5ms 41.2MB 107ms 20ms dotnet 7.0.203

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ocaml 1.ml 2.9ms 0.5ms 2.7MB 0ms 0ms ocaml 5.0.0
csharp 1.cs 6.7ms 1.3ms 10.0MB 0ms 0ms dotnet/aot 7.0.203
csharp 1.cs 22ms 0.8ms 26.1MB 8ms 2ms mono 6.12.0
csharp 1.cs 58ms 4.5ms 28.7MB 28ms 4ms dotnet 7.0.203

lru

Input: 1000 1000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 2.cs 134ms 1.5ms 10.1MB 123ms 0ms dotnet/aot 7.0.203
csharp 2.cs 195ms 1.2ms 24.0MB 180ms 0ms mono 6.12.0
csharp 2.cs 204ms 0.8ms 31.4MB 170ms 7ms dotnet 7.0.203
ocaml 1.ml 250ms 4.9ms 6.7MB 240ms 0ms ocaml 5.0.0
csharp 1.cs 1510ms 9.5ms 58.2MB 1487ms 20ms dotnet/aot 7.0.203
csharp 1.cs 1765ms 44ms 75.2MB 1700ms 27ms dotnet 7.0.203
csharp 1.cs 3357ms 2.0ms 47.6MB 3290ms 57ms mono 6.12.0

Input: 1000 3000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 2.cs 382ms 1.5ms 10.1MB 380ms 0ms dotnet/aot 7.0.203
csharp 2.cs 428ms 1.5ms 27.4MB 400ms 7ms dotnet 7.0.203
csharp 2.cs 525ms 1.5ms 25.3MB 513ms 0ms mono 6.12.0
ocaml 1.ml 727ms 1.6ms 6.7MB 717ms 0ms ocaml 5.0.0
csharp 1.cs 4474ms 9.6ms 58.6MB 4450ms 17ms dotnet/aot 7.0.203
csharp 1.cs 4907ms 65ms 75.6MB 4857ms 37ms dotnet 7.0.203
csharp 1.cs timeout 0.0ms 47.6MB 4927ms 67ms mono 6.12.0

Input: 100 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 2.cs 71ms 2.5ms 8.1MB 67ms 0ms dotnet/aot 7.0.203
ocaml 1.ml 110ms 0.4ms 6.0MB 93ms 0ms ocaml 5.0.0
csharp 2.cs 112ms 0.5ms 25.1MB 93ms 0ms mono 6.12.0
csharp 2.cs 139ms 5.6ms 29.6MB 100ms 3ms dotnet 7.0.203
csharp 1.cs 4338ms 3.6ms 53.4MB 4313ms 17ms dotnet/aot 7.0.203
csharp 1.cs 4517ms 5.1ms 73.2MB 4470ms 30ms dotnet 7.0.203
csharp 1.cs 4606ms 11ms 33.5MB 4583ms 3ms mono 6.12.0

merkletrees

Input: 17

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 2.cs 925ms 3.9ms 383.7MB 813ms 170ms dotnet/aot 7.0.203
csharp 1.cs 993ms 12ms 304.5MB 880ms 157ms dotnet/aot 7.0.203
csharp 2.cs 1143ms 4.4ms 431.9MB 940ms 213ms dotnet 7.0.203
csharp 1.cs 1202ms 3.5ms 431.8MB 1030ms 210ms dotnet 7.0.203
csharp 1.cs 1920ms 100ms 149.9MB 2397ms 177ms mono 6.12.0
ocaml 1.ml 1931ms 14ms 69.1MB 1880ms 30ms ocaml 5.0.0
ocaml 2.ml 3617ms 28ms 74.2MB 3557ms 43ms ocaml 5.0.0

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 2.cs 215ms 3.9ms 137.7MB 153ms 60ms dotnet/aot 7.0.203
csharp 1.cs 265ms 6.2ms 195.1MB 183ms 77ms dotnet/aot 7.0.203
ocaml 1.ml 275ms 3.8ms 25.6MB 253ms 3ms ocaml 5.0.0
csharp 1.cs 341ms 2.9ms 72.3MB 330ms 30ms mono 6.12.0
csharp 2.cs 371ms 33ms 133.6MB 277ms 73ms dotnet 7.0.203
csharp 1.cs 375ms 3.2ms 174.9MB 270ms 90ms dotnet 7.0.203
ocaml 2.ml 629ms 19ms 30.1MB 610ms 7ms ocaml 5.0.0

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 9.cs 420ms 10ms 29.2MB 387ms 3ms dotnet 7.0.203
ocaml 1.ml 546ms 8.2ms 2.9MB 533ms 0ms ocaml 5.0.0
csharp 8.cs 583ms 2.6ms 8.2MB 577ms 0ms dotnet/aot 7.0.203
csharp 8.cs 603ms 6.5ms 29.6MB 570ms 3ms dotnet 7.0.203
csharp 8.cs 1298ms 32ms 24.9MB 1277ms 3ms 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.7ms 2.8MB 50ms 0ms ocaml 5.0.0
csharp 8.cs 68ms 1.9ms 11.9MB 63ms 0ms dotnet/aot 7.0.203
csharp 9.cs 109ms 2.4ms 27.8MB 67ms 13ms dotnet 7.0.203
csharp 8.cs 116ms 3.3ms 29.5MB 87ms 3ms dotnet 7.0.203
csharp 8.cs 153ms 3.2ms 24.9MB 140ms 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 610ms 4.2ms 19.7MB 593ms 7ms dotnet/aot 7.0.203
csharp 2.cs 760ms 4.5ms 38.6MB 727ms 3ms dotnet 7.0.203
csharp 1.cs 1135ms 7.9ms 73.7MB 1107ms 20ms dotnet/aot 7.0.203
csharp 1.cs 1358ms 41ms 88.5MB 1320ms 23ms mono 6.12.0
csharp 1.cs 1941ms 86ms 88.5MB 1890ms 20ms dotnet 7.0.203
ocaml 2.ml 2718ms 31ms 19.1MB 2703ms 0ms ocaml 5.0.0
csharp 2.cs 2787ms 19ms 34.0MB 2770ms 3ms mono 6.12.0
ocaml 1.ml 3571ms 30ms 550.6MB 3400ms 157ms ocaml 5.0.0

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 1.cs 142ms 1.4ms 30.0MB 127ms 7ms dotnet/aot 7.0.203
csharp 2.cs 146ms 3.9ms 15.3MB 140ms 0ms dotnet/aot 7.0.203
csharp 1.cs 202ms 3.3ms 40.7MB 183ms 3ms mono 6.12.0
csharp 2.cs 221ms 2.7ms 30.1MB 187ms 3ms dotnet 7.0.203
csharp 1.cs 334ms 10ms 42.2MB 307ms 3ms dotnet 7.0.203
ocaml 2.ml 640ms 4.4ms 9.3MB 627ms 0ms ocaml 5.0.0
csharp 2.cs 675ms 0.5ms 26.2MB 660ms 0ms mono 6.12.0
ocaml 1.ml 763ms 24ms 140.2MB 713ms 30ms ocaml 5.0.0

regex-redux

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 5.cs 3185ms 5.9ms 525.3MB 3177ms 203ms dotnet 7.0.203
csharp 6.cs 3534ms 9.6ms 459.5MB 3380ms 200ms dotnet/aot 7.0.203
csharp 6.cs 3658ms 65ms 521.2MB 3520ms 203ms dotnet 7.0.203
csharp 5.cs timeout 0.0ms 184.6MB 4953ms 103ms dotnet/aot 7.0.203
ocaml 2.ml timeout 0.0ms 181.9MB 4887ms 90ms ocaml 5.0.0

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 6.cs 373ms 3.1ms 72.5MB 350ms 23ms dotnet/aot 7.0.203
csharp 5.cs 468ms 3.5ms 94.9MB 410ms 43ms dotnet 7.0.203
csharp 6.cs 531ms 9.0ms 92.7MB 460ms 53ms dotnet 7.0.203
csharp 5.cs 713ms 1.8ms 70.3MB 683ms 23ms dotnet/aot 7.0.203
ocaml 2.ml 715ms 2.6ms 52.5MB 673ms 27ms ocaml 5.0.0

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 3-m.cs 2098ms 11ms 13.7MB 4057ms 10ms dotnet/aot 7.0.203
csharp 3-m.cs 4123ms 363ms 30.5MB 7190ms 27ms dotnet 7.0.203
csharp 3.cs timeout 0.0ms 30.2MB 9583ms 10ms mono 6.12.0
ocaml 2.ml timeout 0.0ms 4.2MB 4987ms 0ms ocaml 5.0.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 3-m.cs 544ms 5.0ms 11.9MB 1020ms 10ms dotnet/aot 7.0.203
csharp 3-m.cs 1106ms 15ms 31.9MB 2037ms 17ms dotnet 7.0.203
ocaml 2.ml 1540ms 14ms 3.5MB 1527ms 0ms ocaml 5.0.0
csharp 3-m.cs 2596ms 3.1ms 27.5MB 5030ms 13ms mono 6.12.0

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
csharp 3-m.cs 155ms 4.8ms 12.3MB 267ms 3ms dotnet/aot 7.0.203
csharp 3-m.cs 364ms 39ms 31.6MB 533ms 13ms dotnet 7.0.203
ocaml 2.ml 394ms 0.4ms 3.3MB 380ms 0ms ocaml 5.0.0
csharp 3-m.cs 707ms 52ms 29.8MB 1280ms 0ms mono 6.12.0