Odin VS Ocaml benchmarks

Current benchmark data was generated on Fri May 20 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.)

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
odin 1.odin 2.1ms 1.0ms 0.9MB 0ms 0ms odin 2022
ocaml 1.ml 2.3ms 0.7ms 2.6MB 0ms 0ms ocaml 4.14.0

lru

Input: 1000 1000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
odin 1.odin 176ms 1.5ms 1.8MB 160ms 0ms odin 2022
ocaml 1.ml 240ms 1.1ms 5.9MB 227ms 0ms ocaml 4.14.0

Input: 1000 3000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
odin 1.odin 517ms 3.6ms 1.8MB 503ms 0ms odin 2022
ocaml 1.ml 708ms 1.7ms 5.8MB 697ms 0ms ocaml 4.14.0

Input: 100 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
odin 1.odin 82ms 0.2ms 0.8MB 70ms 0ms odin 2022
ocaml 1.ml 104ms 0.3ms 5.0MB 97ms 0ms ocaml 4.14.0

mandelbrot

Input: 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
odin 1.odin 1615ms 0.8ms 4.7MB 1603ms 0ms odin 2022

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
odin 1.odin 69ms 0.3ms 0.8MB 60ms 0ms odin 2022

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ocaml 1.ml 469ms 0.1ms 2.5MB 460ms 0ms ocaml 4.14.0
odin 1.odin 2543ms 1.4ms 0.8MB 2530ms 0ms odin 2022

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ocaml 1.ml 49ms 0.2ms 2.5MB 40ms 0ms ocaml 4.14.0
odin 1.odin 256ms 0.3ms 0.8MB 250ms 0ms odin 2022

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
odin 1.odin 819ms 17ms 40.6MB 797ms 7ms odin 2022
odin 2.odin 1251ms 15ms 6.4MB 1240ms 0ms odin 2022
ocaml 1.ml 2063ms 42ms 554.8MB 1947ms 97ms ocaml 4.14.0
ocaml 2.ml 2282ms 3.9ms 19.6MB 2267ms 0ms ocaml 4.14.0

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
odin 1.odin 122ms 0.2ms 11.4MB 110ms 0ms odin 2022
odin 2.odin 303ms 3.5ms 2.9MB 293ms 0ms odin 2022
ocaml 1.ml 406ms 11ms 142.8MB 370ms 20ms ocaml 4.14.0
ocaml 2.ml 551ms 1.5ms 9.6MB 540ms 0ms ocaml 4.14.0

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
odin 1.odin 4493ms 1.5ms 2.9MB 4480ms 0ms odin 2022
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
odin 1.odin 1128ms 0.4ms 2.4MB 1120ms 0ms odin 2022
ocaml 2.ml 1650ms 2.9ms 3.4MB 1637ms 0ms ocaml 4.14.0

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
odin 1.odin 285ms 0.2ms 1.9MB 273ms 0ms odin 2022
ocaml 2.ml 415ms 0.7ms 3.0MB 403ms 0ms ocaml 4.14.0