Kotlin VS Javascript benchmarks

Current benchmark data was generated on Sat Jan 28 2023, 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.)

binarytrees

Input: 18

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
kotlin 1.kt 629ms 6.5ms 413.0MB 657ms 77ms kotlin/jvm 17.0.2
javascript 1.js 1250ms 7.2ms 244.6MB 1580ms 50ms bun 0.5.1
javascript 1.js 3580ms 51ms 262.3MB 2593ms 1213ms node 19.5.0
kotlin 1.kt timeout 0.0ms 282.5MB 8413ms 1150ms kotlin/native 1.8.0

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 120ms 5.4ms 103.9MB 103ms 13ms bun 0.5.1
kotlin 1.kt 125ms 2.0ms 109.7MB 107ms 27ms kotlin/jvm 17.0.2
javascript 1.js 165ms 1.7ms 69.5MB 153ms 17ms node 19.5.0
kotlin 1-m.kt 494ms 11ms 30.5MB 847ms 77ms kotlin/native 1.8.0

coro-prime-sieve

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 2275ms 38ms 81.0MB 2327ms 30ms node 19.5.0
kotlin 1.kt 2892ms 79ms 160.4MB 3693ms 57ms kotlin/jvm 17.0.2
kotlin 2-m.kt 3128ms 450ms 157.4MB 5980ms 57ms kotlin/jvm 17.0.2
javascript 1.js 3607ms 97ms 108.9MB 3583ms 27ms bun 0.5.1
kotlin 1.kt timeout 0.0ms 10.8MB 6177ms 300ms kotlin/native 1.8.0
kotlin 2-m.kt timeout 0.0ms 35.0MB 9297ms 150ms kotlin/native 1.8.0

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 212ms 5.6ms 62.5MB 187ms 13ms node 19.5.0
javascript 1.js 258ms 5.7ms 103.5MB 263ms 17ms bun 0.5.1
kotlin 1-m.kt 706ms 24ms 99.1MB 1240ms 40ms kotlin/jvm 17.0.2
kotlin 2-m.kt 811ms 15ms 26.1MB 1450ms 33ms kotlin/native 1.8.0
kotlin 1.kt 1032ms 12ms 8.8MB 1270ms 57ms kotlin/native 1.8.0
kotlin 2-m.kt 1082ms 129ms 114.4MB 1967ms 50ms kotlin/jvm 17.0.2

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
kotlin 1.kt 2.6ms 1.0ms 1.5MB 0ms 0ms kotlin/native 1.8.0
javascript 1.js 15ms 0.5ms 49.9MB 0ms 0ms bun 0.5.1
javascript 1.js 43ms 0.8ms 44.8MB 28ms 4ms node 19.5.0
kotlin 1.kt 66ms 1.4ms 40.8MB 50ms 8ms kotlin/jvm 17.0.2

http-server

Input: 3000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.bun.js 136ms 2.6ms 88.9MB 73ms 53ms bun 0.5.1
javascript 1.js 3900ms 51ms 154.6MB 1713ms 353ms node 19.5.0
kotlin 1.kt timeout 0.0ms 296.5MB 8853ms 617ms kotlin/jvm 17.0.2
kotlin 2.kt timeout 0.0ms 267.6MB 8833ms 673ms kotlin/jvm 17.0.2

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.bun.js 87ms 5.3ms 74.2MB 23ms 27ms bun 0.5.1
javascript 1.js 373ms 19ms 70.1MB 350ms 83ms node 19.5.0
kotlin 2-m.kt 2340ms 166ms 198.0MB 3627ms 210ms kotlin/jvm 17.0.2
kotlin 1-m.kt 2612ms 76ms 184.0MB 3997ms 273ms kotlin/jvm 17.0.2

json-serde

Input: sample 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 131ms 1.3ms 92.3MB 110ms 7ms bun 0.5.1
javascript 1.js 170ms 1.6ms 75.5MB 147ms 20ms node 19.5.0
kotlin 1-m.kt 1170ms 37ms 217.4MB 2000ms 90ms kotlin/jvm 17.0.2

Input: canada 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 722ms 0.6ms 257.6MB 697ms 47ms bun 0.5.1
javascript 1.js 1074ms 7.9ms 281.7MB 1037ms 103ms node 19.5.0
kotlin 1.kt 4233ms 274ms 875.8MB 6110ms 223ms kotlin/jvm 17.0.2

lru

Input: 1000 1000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
kotlin 2-m.kt 221ms 5.0ms 113.5MB 323ms 27ms kotlin/jvm 17.0.2
kotlin 1.kt 240ms 5.8ms 109.4MB 290ms 17ms kotlin/jvm 17.0.2
javascript 2.js 376ms 2.0ms 54.6MB 363ms 3ms node 19.5.0
kotlin 2-m.kt 442ms 3.8ms 42.5MB 727ms 13ms kotlin/native 1.8.0
javascript 1.js 558ms 5.7ms 142.4MB 547ms 30ms bun 0.5.1
javascript 2.js 792ms 5.3ms 109.3MB 800ms 13ms bun 0.5.1
javascript 1.js 1034ms 5.1ms 61.8MB 1013ms 10ms node 19.5.0
kotlin 1.kt timeout 0.0ms 15.0MB 4993ms 10ms kotlin/native 1.8.0

Input: 1000 3000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
kotlin 2.kt 365ms 4.2ms 132.5MB 460ms 33ms kotlin/jvm 17.0.2
kotlin 1.kt 458ms 3.2ms 132.6MB 507ms 23ms kotlin/jvm 17.0.2
javascript 2.js 1014ms 6.1ms 61.5MB 990ms 17ms node 19.5.0
kotlin 2-m.kt 1377ms 6.7ms 145.0MB 2233ms 87ms kotlin/native 1.8.0
javascript 1.js 1587ms 8.0ms 164.9MB 1607ms 23ms bun 0.5.1
javascript 2.js 2293ms 13ms 120.6MB 2303ms 10ms bun 0.5.1
javascript 1.js 2965ms 7.7ms 62.1MB 2940ms 17ms node 19.5.0
kotlin 1.kt timeout 0.0ms 15.0MB 4997ms 0ms kotlin/native 1.8.0

Input: 100 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
kotlin 1.kt 172ms 3.4ms 75.8MB 243ms 10ms kotlin/jvm 17.0.2
kotlin 2.kt 186ms 6.0ms 78.6MB 250ms 27ms kotlin/jvm 17.0.2
javascript 2.js 203ms 3.7ms 49.1MB 193ms 3ms node 19.5.0
kotlin 2-m.kt 224ms 4.4ms 32.4MB 383ms 3ms kotlin/native 1.8.0
javascript 1.js 296ms 6.1ms 117.4MB 287ms 17ms bun 0.5.1
javascript 1.js 376ms 2.1ms 49.6MB 367ms 3ms node 19.5.0
javascript 2.js 429ms 10ms 102.0MB 440ms 17ms bun 0.5.1
kotlin 1.kt timeout 0.0ms 17.1MB 5000ms 7ms kotlin/native 1.8.0

merkletrees

Input: 17

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
kotlin 1.kt 444ms 4.8ms 285.8MB 437ms 57ms kotlin/jvm 17.0.2
javascript 1.js 735ms 6.0ms 153.3MB 813ms 30ms bun 0.5.1
javascript 1.js 784ms 10ms 121.8MB 803ms 43ms node 19.5.0
kotlin 1-m.kt 2678ms 5.5ms 138.5MB 4327ms 570ms kotlin/native 1.8.0

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 169ms 5.3ms 104.0MB 147ms 23ms bun 0.5.1
kotlin 1.kt 174ms 3.5ms 221.9MB 160ms 43ms kotlin/jvm 17.0.2
javascript 1.js 230ms 5.3ms 90.0MB 203ms 37ms node 19.5.0
kotlin 1-m.kt 516ms 7.8ms 38.4MB 817ms 87ms kotlin/native 1.8.0

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
kotlin 1n.kt 548ms 2.0ms 1.5MB 537ms 0ms kotlin/native 1.8.0
kotlin 1.kt 573ms 6.6ms 42.9MB 570ms 13ms kotlin/jvm 17.0.2
javascript 6.js 606ms 7.3ms 47.3MB 593ms 0ms node 19.5.0
javascript 6.js 1009ms 0.7ms 68.0MB 1000ms 10ms bun 0.5.1

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
kotlin 1n.kt 58ms 1.5ms 1.5MB 47ms 0ms kotlin/native 1.8.0
javascript 6.js 107ms 2.6ms 47.4MB 93ms 3ms node 19.5.0
javascript 6.js 121ms 0.7ms 61.9MB 113ms 7ms bun 0.5.1
kotlin 1.kt 140ms 5.3ms 42.7MB 140ms 17ms kotlin/jvm 17.0.2

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 3.js timeout 0.0ms 79.0MB 4980ms 20ms node 19.5.0
kotlin 1.kt timeout 0.0ms 218.2MB 5383ms 67ms kotlin/jvm 17.0.2
kotlin 1n.kt timeout 0.0ms 23.1MB 6287ms 170ms kotlin/native 1.8.0
kotlin 2n.kt timeout 0.0ms 10.4MB 5020ms 103ms kotlin/native 1.8.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
kotlin 1.kt 1437ms 6.9ms 210.3MB 1770ms 57ms kotlin/jvm 17.0.2
javascript 3.js 1552ms 2.5ms 62.3MB 1543ms 17ms node 19.5.0
kotlin 1n.kt timeout 0.0ms 18.8MB 6257ms 147ms kotlin/native 1.8.0
kotlin 2n.kt timeout 0.0ms 10.2MB 5017ms 103ms kotlin/native 1.8.0

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 159.4MB 5310ms 60ms kotlin/jvm 17.0.2
kotlin 1n.kt timeout 0.0ms 277.3MB 5447ms 763ms kotlin/native 1.8.0

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
kotlin 1.kt 1080ms 5.7ms 95.1MB 1430ms 33ms kotlin/jvm 17.0.2
kotlin 1n.kt 4415ms 48ms 65.1MB 5760ms 13ms kotlin/native 1.8.0

secp256k1

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 3026ms 3.2ms 102.2MB 3037ms 27ms bun 0.5.1
javascript 1.js 3297ms 5.2ms 51.4MB 3300ms 10ms node 19.5.0
kotlin 1.kt 4451ms 34ms 184.1MB 5353ms 50ms kotlin/jvm 17.0.2

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 785ms 4.4ms 106.8MB 790ms 17ms bun 0.5.1
javascript 1.js 872ms 6.1ms 50.0MB 873ms 3ms node 19.5.0
kotlin 1-m.kt 1374ms 19ms 184.2MB 2113ms 47ms kotlin/jvm 17.0.2