Codon VS OCaml benchmarks

Current benchmark data was generated on Tue Jul 01 2025, full log can be found HERE

CONTRIBUTIONS are WELCOME!

[x86_64][4 cores] AMD EPYC 7763 64-Core Processor (Model 1)

* -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
ocaml 1.ml 1.8ms 0.2ms 5.1MB 0ms 0ms ocaml 5.3.0
codon 1-m.py 11ms 0.6ms 8.5MB 20ms 0ms codon 0.19.0

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ocaml 1.ml 375ms 3.2ms 5.3MB 363ms 0ms ocaml 5.3.0
codon 1.py 1325ms 2.3ms 9.4MB 1630ms 0ms codon 0.19.0

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ocaml 1.ml 41ms 1.9ms 5.2MB 33ms 0ms ocaml 5.3.0
codon 1-m.py 173ms 4.4ms 9.4MB 483ms 0ms codon 0.19.0

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
codon 1-m.py 409ms 6.0ms 48.6MB 697ms 3ms codon 0.19.0
codon 2.py 913ms 1.4ms 100.8MB 1220ms 23ms codon 0.19.0
ocaml 1.ml 949ms 8.7ms 543.2MB 887ms 47ms ocaml 5.3.0
ocaml 2.ml 1888ms 14ms 17.7MB 1877ms 0ms ocaml 5.3.0

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
codon 1-m.py 117ms 2.3ms 19.4MB 427ms 0ms codon 0.19.0
ocaml 1.ml 179ms 2.9ms 142.3MB 157ms 10ms ocaml 5.3.0
codon 2-m.py 233ms 3.4ms 27.7MB 543ms 7ms codon 0.19.0
ocaml 2.ml 466ms 5.7ms 9.1MB 453ms 0ms ocaml 5.3.0