Javascript VS OCaml benchmarks

Current benchmark data was generated on Mon Feb 06 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
javascript 1.js 1382ms 24ms 246.2MB 1707ms 77ms bun 0.5.5
javascript 1.js 4218ms 18ms 257.4MB 2980ms 1550ms node 19.6.0
ocaml 1.ml timeout 0.0ms 153.6MB 4920ms 60ms ocaml 5.0.0

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 132ms 3.3ms 99.7MB 107ms 23ms bun 0.5.5
javascript 1.js 199ms 4.6ms 70.3MB 180ms 20ms node 19.6.0
ocaml 1.ml 350ms 6.3ms 22.9MB 330ms 3ms ocaml 5.0.0

coro-prime-sieve

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 2458ms 24ms 80.6MB 2493ms 50ms node 19.6.0
javascript 1.js 3544ms 56ms 112.7MB 3520ms 40ms bun 0.5.5

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 219ms 2.1ms 62.2MB 200ms 13ms node 19.6.0
javascript 1.js 251ms 1.7ms 104.5MB 257ms 20ms bun 0.5.5

edigits

Input: 250001

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 381ms 0.2ms 97.6MB 363ms 17ms bun 0.5.5
javascript 1.js 407ms 2.9ms 59.4MB 400ms 20ms node 19.6.0

Input: 100000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 186ms 4.5ms 51.9MB 197ms 7ms node 19.6.0
javascript 1.js 773ms 2.3ms 89.2MB 747ms 23ms bun 0.5.5

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ocaml 1.ml 2.3ms 0.6ms 3.1MB 0ms 0ms ocaml 5.0.0
javascript 1.js 17ms 0.7ms 50.3MB 0ms 10ms bun 0.5.5
javascript 1.js 44ms 1.3ms 42.7MB 28ms 4ms node 19.6.0

http-server

Input: 3000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.bun.js 147ms 1.3ms 87.5MB 80ms 70ms bun 0.5.5
javascript 1.js 2127ms 1938ms 161.5MB 1243ms 270ms node 19.6.0

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.bun.js 90ms 3.5ms 76.4MB 27ms 27ms bun 0.5.5
javascript 1.js 389ms 4.5ms 69.6MB 363ms 97ms node 19.6.0

json-serde

Input: sample 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 139ms 3.9ms 90.9MB 100ms 23ms bun 0.5.5
javascript 1.js 177ms 0.7ms 74.4MB 153ms 20ms node 19.6.0

Input: canada 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 789ms 1.5ms 249.2MB 753ms 63ms bun 0.5.5
javascript 1.js 1198ms 7.4ms 282.5MB 1133ms 150ms node 19.6.0

lru

Input: 1000 1000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ocaml 1.ml 245ms 1.5ms 6.8MB 233ms 0ms ocaml 5.0.0
javascript 2.js 367ms 2.4ms 54.8MB 353ms 7ms node 19.6.0
javascript 1.js 626ms 8.5ms 148.8MB 620ms 27ms bun 0.5.5
javascript 2.js 675ms 4.0ms 111.2MB 683ms 20ms bun 0.5.5
javascript 1.js 1009ms 2.2ms 62.1MB 990ms 10ms node 19.6.0

Input: 1000 3000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ocaml 1.ml 724ms 1.7ms 6.8MB 710ms 0ms ocaml 5.0.0
javascript 2.js 974ms 4.7ms 62.1MB 950ms 17ms node 19.6.0
javascript 1.js 1782ms 8.6ms 167.2MB 1803ms 47ms bun 0.5.5
javascript 2.js 1934ms 18ms 119.7MB 1930ms 30ms bun 0.5.5
javascript 1.js 2888ms 5.9ms 62.0MB 2860ms 20ms node 19.6.0

Input: 100 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ocaml 1.ml 109ms 0.3ms 6.0MB 97ms 0ms ocaml 5.0.0
javascript 2.js 202ms 3.3ms 49.4MB 187ms 10ms node 19.6.0
javascript 1.js 323ms 3.1ms 118.5MB 307ms 23ms bun 0.5.5
javascript 2.js 367ms 1.1ms 107.2MB 373ms 23ms bun 0.5.5
javascript 1.js 391ms 2.7ms 50.4MB 373ms 7ms node 19.6.0

merkletrees

Input: 17

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 829ms 3.5ms 151.0MB 913ms 43ms bun 0.5.5
javascript 1.js 958ms 10ms 122.6MB 987ms 53ms node 19.6.0
ocaml 1.ml 1777ms 7.9ms 69.3MB 1723ms 40ms ocaml 5.0.0
ocaml 2.ml 3374ms 15ms 74.1MB 3323ms 33ms ocaml 5.0.0

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 191ms 2.1ms 108.8MB 173ms 17ms bun 0.5.5
ocaml 1.ml 265ms 3.9ms 25.8MB 240ms 10ms ocaml 5.0.0
javascript 1.js 268ms 2.1ms 90.5MB 250ms 30ms node 19.6.0
ocaml 2.ml 589ms 2.0ms 30.3MB 567ms 7ms ocaml 5.0.0

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ocaml 1.ml 538ms 4.0ms 3.0MB 520ms 0ms ocaml 5.0.0
javascript 6.js 690ms 0.8ms 47.8MB 673ms 10ms node 19.6.0
javascript 6.js 1031ms 11ms 70.5MB 1017ms 13ms bun 0.5.5

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ocaml 1.ml 58ms 0.3ms 2.9MB 50ms 0ms ocaml 5.0.0
javascript 6.js 116ms 1.6ms 48.3MB 103ms 3ms node 19.6.0
javascript 6.js 125ms 1.1ms 67.1MB 110ms 13ms bun 0.5.5

secp256k1

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 3800ms 8.2ms 105.6MB 3820ms 23ms bun 0.5.5
javascript 1.js 3968ms 20ms 52.3MB 3973ms 10ms node 19.6.0

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 980ms 3.5ms 101.9MB 977ms 30ms bun 0.5.5
javascript 1.js 1034ms 6.4ms 50.2MB 1027ms 13ms node 19.6.0

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 3.js timeout 0.0ms 79.3MB 4980ms 27ms node 19.6.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 3.js 1595ms 5.1ms 62.9MB 1583ms 20ms node 19.6.0

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 6-m.js 2799ms 6.7ms 74.5MB 5250ms 23ms node 19.6.0
ocaml 2.ml timeout 0.0ms 4.1MB 4987ms 0ms ocaml 5.0.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 6-m.js 850ms 17ms 69.1MB 1493ms 27ms node 19.6.0
ocaml 2.ml 1550ms 13ms 3.6MB 1537ms 0ms ocaml 5.0.0

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ocaml 2.ml 390ms 0.4ms 3.4MB 380ms 0ms ocaml 5.0.0
javascript 6.js 416ms 8.1ms 67.4MB 547ms 23ms node 19.6.0