OCaml VS Lua benchmarks

Current benchmark data was generated on Mon Oct 03 2022, full log can be found HERE

CONTRIBUTIONS are WELCOME!

[x86_64][2 cores] Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz (Model 106)

* -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
ocaml 1.ml 3996ms 16ms 120.6MB 3963ms 20ms ocaml 4.14.0
lua 1.lua timeout 0.0ms 0.0MB 0ms 0ms lua 5.4.4
lua 1.lua timeout 0.0ms 0.0MB 0ms 0ms luajit 2.1.0-beta3

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ocaml 1.ml 268ms 3.9ms 17.4MB 253ms 0ms ocaml 4.14.0
lua 1.lua 433ms 42ms 24.7MB 417ms 0ms luajit 2.1.0-beta3
lua 1.lua 1062ms 11ms 17.2MB 1047ms 0ms lua 5.4.4

fannkuch-redux

Input: 11

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ocaml 2.ml 3944ms 24ms 2.4MB 3930ms 0ms ocaml 4.14.0

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ocaml 2.ml 326ms 0.9ms 2.5MB 320ms 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 424ms 0.4ms 25.3MB 403ms 7ms ocaml 4.14.0

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ocaml 6.ml 47ms 2.5ms 5.9MB 33ms 0ms ocaml 4.14.0

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
lua 1.lua 2.3ms 0.6ms 2.2MB 0ms 0ms luajit 2.1.0-beta3
ocaml 1.ml 2.3ms 0.7ms 2.5MB 0ms 0ms ocaml 4.14.0
lua 1.lua 2.4ms 1.0ms 1.1MB 0ms 0ms lua 5.4.4

lru

Input: 1000 1000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ocaml 1.ml 238ms 0.1ms 6.0MB 230ms 0ms ocaml 4.14.0

Input: 1000 3000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ocaml 1.ml 706ms 0.9ms 5.9MB 690ms 0ms ocaml 4.14.0

Input: 100 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ocaml 1.ml 105ms 1.1ms 5.2MB 93ms 0ms ocaml 4.14.0

merkletrees

Input: 17

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ocaml 1.ml 1492ms 4.5ms 62.8MB 1460ms 13ms ocaml 4.14.0
ocaml 2.ml 2545ms 6.5ms 71.3MB 2520ms 10ms ocaml 4.14.0
lua 1.lua timeout 0.0ms 0.0MB 0ms 0ms lua 5.4.4
lua 1.lua timeout 0.0ms 0.0MB 0ms 0ms luajit 2.1.0-beta3

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ocaml 1.ml 192ms 1.8ms 18.6MB 170ms 3ms ocaml 4.14.0
ocaml 2.ml 432ms 3.0ms 23.6MB 413ms 0ms ocaml 4.14.0
lua 1.lua 1650ms 33ms 40.6MB 1630ms 7ms luajit 2.1.0-beta3
lua 1.lua 2840ms 54ms 41.5MB 2810ms 13ms lua 5.4.4

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ocaml 1.ml 470ms 0.5ms 2.5MB 460ms 0ms ocaml 4.14.0
lua 4.lua 1111ms 17ms 1.0MB 1097ms 0ms luajit 2.1.0-beta3
lua 4.lua timeout 0.0ms 0.0MB 0ms 0ms lua 5.4.4

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ocaml 1.ml 51ms 0.8ms 2.4MB 40ms 0ms ocaml 4.14.0
lua 4.lua 116ms 4.1ms 1.0MB 103ms 0ms luajit 2.1.0-beta3
lua 4.lua 1195ms 15ms 1.0MB 1180ms 0ms lua 5.4.4

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ocaml 1.ml 1988ms 8.5ms 556.0MB 1893ms 77ms ocaml 4.14.0
ocaml 2.ml 2288ms 25ms 20.2MB 2277ms 0ms ocaml 4.14.0

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ocaml 1.ml 374ms 18ms 142.4MB 340ms 17ms ocaml 4.14.0
ocaml 2.ml 549ms 1.2ms 9.7MB 540ms 0ms ocaml 4.14.0

regex-redux

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
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
ocaml 2.ml 683ms 3.0ms 49.9MB 663ms 7ms ocaml 4.14.0

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
lua 1.lua timeout 0.0ms 0.0MB 0ms 0ms lua 5.4.4
lua 1.lua timeout 0.0ms 0.0MB 0ms 0ms luajit 2.1.0-beta3
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
lua 1.lua 1550ms 1.2ms 2.4MB 1533ms 0ms luajit 2.1.0-beta3
ocaml 2.ml 1647ms 1.1ms 3.2MB 1640ms 0ms ocaml 4.14.0
lua 1.lua timeout 0.0ms 0.0MB 0ms 0ms lua 5.4.4

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
lua 1.lua 394ms 3.2ms 1.0MB 377ms 0ms luajit 2.1.0-beta3
ocaml 2.ml 415ms 1.0ms 3.1MB 400ms 0ms ocaml 4.14.0
lua 1.lua timeout 0.0ms 0.0MB 0ms 0ms lua 5.4.4