Lua VS OCaml benchmarks

Current benchmark data was generated on Wed Feb 08 2023, full log can be found HERE

CONTRIBUTIONS are WELCOME!

[x86_64][2 cores] Intel(R) Xeon(R) Platinum 8171M 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
lua 1.lua timeout 0.0ms 119.5MB 4903ms 70ms lua 5.4.4
lua 1.lua timeout 0.0ms 174.6MB 4897ms 83ms luajit 2.1.0-beta3
ocaml 1.ml timeout 0.0ms 139.4MB 4927ms 50ms ocaml 5.0.0

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ocaml 1.ml 395ms 6.2ms 22.9MB 363ms 13ms ocaml 5.0.0
lua 1.lua 584ms 53ms 24.6MB 553ms 10ms luajit 2.1.0-beta3
lua 1.lua 1408ms 8.5ms 17.4MB 1387ms 3ms lua 5.4.4

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
lua 1.lua 2.4ms 0.8ms 2.2MB 0ms 0ms luajit 2.1.0-beta3
lua 1.lua 2.4ms 1.0ms 1.4MB 0ms 0ms lua 5.4.4
ocaml 1.ml 2.6ms 0.9ms 2.9MB 0ms 0ms ocaml 5.0.0

merkletrees

Input: 17

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ocaml 1.ml 2018ms 8.8ms 69.1MB 1967ms 33ms ocaml 5.0.0
ocaml 2.ml 3866ms 14ms 74.3MB 3803ms 47ms ocaml 5.0.0
lua 1.lua timeout 0.0ms 159.1MB 4913ms 67ms lua 5.4.4
lua 1.lua timeout 0.0ms 180.9MB 4870ms 107ms luajit 2.1.0-beta3

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ocaml 1.ml 296ms 3.1ms 25.8MB 263ms 10ms ocaml 5.0.0
ocaml 2.ml 685ms 5.7ms 30.2MB 653ms 13ms ocaml 5.0.0
lua 1.lua 2162ms 57ms 38.5MB 2130ms 13ms luajit 2.1.0-beta3
lua 1.lua 3623ms 55ms 41.6MB 3593ms 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 668ms 18ms 2.9MB 653ms 0ms ocaml 5.0.0
lua 4.lua 1337ms 28ms 1.5MB 1320ms 0ms luajit 2.1.0-beta3
lua 4.lua timeout 0.0ms 1.5MB 4990ms 0ms lua 5.4.4

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ocaml 1.ml 74ms 3.1ms 2.9MB 63ms 0ms ocaml 5.0.0
lua 4.lua 138ms 1.4ms 1.5MB 123ms 0ms luajit 2.1.0-beta3
lua 4.lua 1886ms 102ms 1.4MB 1873ms 0ms lua 5.4.4

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
lua 1.lua timeout 0.0ms 2.2MB 4977ms 3ms lua 5.4.4
lua 1.lua timeout 0.0ms 2.5MB 4987ms 0ms luajit 2.1.0-beta3
ocaml 2.ml timeout 0.0ms 4.0MB 4983ms 0ms ocaml 5.0.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
lua 1.lua 1702ms 29ms 2.5MB 1687ms 0ms luajit 2.1.0-beta3
ocaml 2.ml 1802ms 7.5ms 3.6MB 1787ms 0ms ocaml 5.0.0
lua 1.lua timeout 0.0ms 2.3MB 4987ms 0ms lua 5.4.4

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
lua 1.lua 434ms 2.7ms 1.5MB 423ms 0ms luajit 2.1.0-beta3
ocaml 2.ml 475ms 16ms 3.4MB 460ms 0ms ocaml 5.0.0
lua 1.lua timeout 0.0ms 1.5MB 4990ms 0ms lua 5.4.4