Kotlin VS Javascript benchmarks

Current benchmark data was generated on Thu Feb 01 2024, 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.)

binarytrees

Input: 18

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
kotlin 1.kt 469ms 5.8ms 575.8MB 550ms 80ms kotlin/jvm 21
javascript 1-m.js 939ms 14ms 247.7MB 1473ms 283ms bun 1.0.25
javascript 1-m.js 1395ms 30ms 261.0MB 2187ms 363ms node 21.6.1
kotlin 1-m.kt 3056ms 54ms 248.5MB 5070ms 700ms kotlin/native 1.8.21

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 85ms 3.6ms 114.9MB 70ms 17ms bun 1.0.25
kotlin 1.kt 99ms 0.6ms 158.3MB 107ms 30ms kotlin/jvm 21
javascript 1.js 140ms 0.6ms 87.4MB 130ms 37ms node 21.6.1
kotlin 1-m.kt 270ms 4.6ms 28.5MB 430ms 60ms kotlin/native 1.8.21

coro-prime-sieve

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 1658ms 4.8ms 83.7MB 1777ms 50ms node 21.6.1
kotlin 2-m.kt 1773ms 358ms 242.2MB 6577ms 93ms kotlin/jvm 21
kotlin 1.kt 2141ms 6.2ms 220.2MB 3003ms 67ms kotlin/jvm 21
javascript 1.js 2362ms 19ms 128.2MB 2397ms 37ms bun 1.0.25
kotlin 1.kt timeout 0.0ms 14.8MB 6140ms 457ms kotlin/native 1.8.21
kotlin 2-m.kt timeout 0.0ms 72.9MB 19063ms 127ms kotlin/native 1.8.21

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 163ms 1.9ms 64.0MB 143ms 17ms node 21.6.1
javascript 1.js 175ms 0.4ms 120.8MB 193ms 17ms bun 1.0.25
kotlin 2-m.kt 404ms 0.7ms 32.8MB 1477ms 27ms kotlin/native 1.8.21
kotlin 1-m.kt 465ms 18ms 74.9MB 1057ms 50ms kotlin/jvm 21
kotlin 1.kt 683ms 4.2ms 10.8MB 820ms 57ms kotlin/native 1.8.21
kotlin 2-m.kt 912ms 14ms 99.8MB 3203ms 77ms kotlin/jvm 21

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
kotlin 1.kt 2.3ms 0.1ms 4.7MB 0ms 0ms kotlin/native 1.8.21
javascript 1.js 14ms 0.3ms 65.6MB 0ms 10ms bun 1.0.25
javascript 1.js 34ms 0.8ms 44.0MB 16ms 6ms node 21.6.1
kotlin 1.kt 58ms 4.5ms 47.3MB 58ms 14ms kotlin/jvm 21

http-server

Input: 3000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.bun.js 181ms 7.8ms 109.5MB 93ms 93ms bun 1.0.25
kotlin 2-m.kt 3188ms 2764ms 353.0MB 15630ms 2370ms kotlin/jvm 21
javascript 1-m.js 3227ms 733ms 217.5MB 3567ms 1320ms node 21.6.1
kotlin 1.kt timeout 0.0ms 405.5MB 16613ms 2393ms kotlin/jvm 21

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.bun.js 127ms 11ms 81.1MB 30ms 53ms bun 1.0.25
javascript 1.js 418ms 5.4ms 71.0MB 390ms 117ms node 21.6.1
kotlin 2-m.kt 2166ms 328ms 250.2MB 3897ms 460ms kotlin/jvm 21
kotlin 1-m.kt 2399ms 24ms 215.3MB 6757ms 710ms kotlin/jvm 21

json-serde

Input: sample 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 83ms 2.6ms 108.5MB 67ms 7ms bun 1.0.25
javascript 1.js 119ms 1.2ms 65.0MB 90ms 30ms node 21.6.1
kotlin 1-m.kt 829ms 56ms 212.4MB 2217ms 83ms kotlin/jvm 21

Input: canada 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 414ms 3.1ms 271.4MB 430ms 23ms bun 1.0.25
javascript 1.js 737ms 2.7ms 202.3MB 783ms 97ms node 21.6.1
kotlin 1-m.kt 2357ms 60ms 1045.0MB 5193ms 157ms kotlin/jvm 21

lru

Input: 1000 1000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
kotlin 1-m.kt 179ms 1.1ms 94.8MB 310ms 17ms kotlin/jvm 21
kotlin 2-m.kt 199ms 5.9ms 100.7MB 413ms 33ms kotlin/jvm 21
kotlin 2.kt 303ms 2.6ms 7.8MB 433ms 10ms kotlin/native 1.8.21
javascript 2.js 315ms 1.3ms 56.2MB 310ms 13ms node 21.6.1
javascript 1.js 405ms 1.0ms 157.6MB 417ms 17ms bun 1.0.25
kotlin 1.kt 507ms 10ms 7.8MB 607ms 3ms kotlin/native 1.8.21
javascript 2.js 524ms 3.6ms 127.5MB 560ms 13ms bun 1.0.25
javascript 1.js 524ms 4.3ms 54.6MB 507ms 13ms node 21.6.1

Input: 1000 3000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
kotlin 2-m.kt 302ms 3.3ms 212.9MB 523ms 57ms kotlin/jvm 21
kotlin 1.kt 326ms 4.4ms 204.4MB 440ms 33ms kotlin/jvm 21
javascript 2.js 865ms 1.6ms 64.0MB 853ms 17ms node 21.6.1
kotlin 2.kt 911ms 18ms 7.8MB 1313ms 50ms kotlin/native 1.8.21
javascript 1.js 1155ms 11ms 183.2MB 1197ms 37ms bun 1.0.25
javascript 1.js 1478ms 1.9ms 61.5MB 1457ms 20ms node 21.6.1
javascript 2.js 1497ms 2.9ms 124.5MB 1530ms 20ms bun 1.0.25
kotlin 1.kt 1534ms 5.9ms 7.8MB 1860ms 30ms kotlin/native 1.8.21

Input: 100 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
kotlin 2.kt 141ms 2.9ms 5.8MB 193ms 3ms kotlin/native 1.8.21
kotlin 1-m.kt 143ms 4.2ms 90.6MB 260ms 37ms kotlin/jvm 21
kotlin 2-m.kt 158ms 11ms 95.6MB 307ms 40ms kotlin/jvm 21
javascript 1.js 165ms 2.5ms 51.9MB 153ms 10ms node 21.6.1
javascript 2.js 169ms 0.2ms 50.3MB 167ms 3ms node 21.6.1
kotlin 1.kt 180ms 1.3ms 5.8MB 237ms 0ms kotlin/native 1.8.21
javascript 1.js 205ms 3.0ms 134.6MB 207ms 23ms bun 1.0.25
javascript 2.js 285ms 1.8ms 122.3MB 320ms 7ms bun 1.0.25

merkletrees

Input: 17

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
kotlin 1.kt 352ms 3.1ms 677.8MB 383ms 80ms kotlin/jvm 21
javascript 1-m.js 477ms 4.1ms 169.9MB 633ms 100ms bun 1.0.25
javascript 1.js 522ms 2.3ms 123.9MB 600ms 90ms node 21.6.1
kotlin 1-m.kt 1499ms 16ms 136.6MB 2307ms 317ms kotlin/native 1.8.21

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 105ms 1.0ms 116.9MB 100ms 13ms bun 1.0.25
kotlin 1.kt 129ms 0.4ms 206.5MB 147ms 47ms kotlin/jvm 21
javascript 1.js 163ms 2.8ms 90.9MB 167ms 33ms node 21.6.1
kotlin 1-m.kt 323ms 19ms 40.4MB 467ms 77ms kotlin/native 1.8.21

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
kotlin 1n.kt 406ms 3.4ms 4.6MB 393ms 0ms kotlin/native 1.8.21
kotlin 1.kt 442ms 1.8ms 49.2MB 497ms 7ms kotlin/jvm 21
javascript 6.js 499ms 10ms 49.9MB 483ms 7ms node 21.6.1
javascript 6.js 704ms 2.9ms 81.5MB 703ms 3ms bun 1.0.25

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
kotlin 1n.kt 44ms 0.9ms 4.6MB 33ms 0ms kotlin/native 1.8.21
javascript 6.js 85ms 0.6ms 49.9MB 67ms 13ms node 21.6.1
javascript 6.js 92ms 2.7ms 81.4MB 87ms 3ms bun 1.0.25
kotlin 1-m.kt 120ms 0.3ms 49.4MB 167ms 17ms kotlin/jvm 21

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
kotlin 1.kt 3719ms 43ms 355.7MB 4563ms 90ms kotlin/jvm 21
javascript 3.js timeout 0.0ms 81.6MB 4987ms 23ms node 21.6.1
kotlin 1n.kt timeout 0.0ms 7.5MB 6490ms 283ms kotlin/native 1.8.21
kotlin 2n.kt timeout 0.0ms 8.2MB 4980ms 173ms kotlin/native 1.8.21

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
kotlin 1-m.kt 976ms 35ms 353.3MB 1717ms 97ms kotlin/jvm 21
javascript 3.js 1127ms 3.3ms 65.6MB 1113ms 23ms node 21.6.1
kotlin 1n.kt timeout 0.0ms 7.4MB 6410ms 283ms kotlin/native 1.8.21
kotlin 2n.kt timeout 0.0ms 8.2MB 5020ms 130ms kotlin/native 1.8.21

regex-redux

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
kotlin 1.kt timeout 0.0ms 173.0MB 5387ms 50ms kotlin/jvm 21
kotlin 1n.kt timeout 0.0ms 279.0MB 4880ms 1073ms kotlin/native 1.8.21

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
kotlin 1-m.kt 825ms 28ms 134.0MB 1250ms 40ms kotlin/jvm 21
kotlin 1n.kt 3285ms 241ms 65.0MB 4160ms 13ms kotlin/native 1.8.21

secp256k1

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 2219ms 17ms 112.5MB 2240ms 30ms bun 1.0.25
javascript 1.js 2467ms 16ms 52.9MB 2470ms 10ms node 21.6.1
kotlin 1.kt 3058ms 41ms 233.9MB 3943ms 80ms kotlin/jvm 21

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 578ms 2.0ms 106.3MB 590ms 13ms bun 1.0.25
javascript 1.js 655ms 6.6ms 50.7MB 660ms 7ms node 21.6.1
kotlin 1-m.kt 975ms 45ms 233.6MB 1800ms 47ms kotlin/jvm 21