Javascript VS Kotlin benchmarks

Current benchmark data was generated on Sun Jan 29 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 637ms 22ms 413.1MB 650ms 83ms kotlin/jvm 17.0.2
javascript 1.js 1311ms 115ms 253.9MB 1557ms 67ms bun 0.5.1
javascript 1.js 3548ms 72ms 239.0MB 2617ms 1197ms node 19.5.0
kotlin 1.kt timeout 0.0ms 214.4MB 8513ms 1040ms kotlin/native 1.8.0

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 121ms 2.4ms 101.4MB 103ms 20ms bun 0.5.1
kotlin 1.kt 126ms 1.9ms 109.3MB 110ms 27ms kotlin/jvm 17.0.2
javascript 1.js 170ms 5.1ms 70.0MB 153ms 20ms node 19.5.0
kotlin 1-m.kt 498ms 4.9ms 30.5MB 830ms 97ms 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 2318ms 32ms 81.3MB 2347ms 37ms node 19.5.0
kotlin 1.kt 2838ms 51ms 154.4MB 3633ms 70ms kotlin/jvm 17.0.2
kotlin 2-m.kt 3112ms 65ms 160.9MB 5930ms 70ms kotlin/jvm 17.0.2
javascript 1.js 3573ms 62ms 124.3MB 3573ms 30ms bun 0.5.1
kotlin 1.kt timeout 0.0ms 10.8MB 6237ms 273ms kotlin/native 1.8.0
kotlin 2-m.kt timeout 0.0ms 32.3MB 9277ms 130ms kotlin/native 1.8.0

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 250ms 11ms 62.5MB 210ms 13ms node 19.5.0
javascript 1.js 294ms 5.9ms 107.9MB 270ms 10ms bun 0.5.1
kotlin 1-m.kt 706ms 31ms 100.0MB 1227ms 43ms kotlin/jvm 17.0.2
kotlin 2-m.kt 847ms 31ms 23.0MB 1523ms 23ms kotlin/native 1.8.0
kotlin 2-m.kt 983ms 35ms 100.4MB 1770ms 33ms kotlin/jvm 17.0.2
kotlin 1.kt 1022ms 5.5ms 8.8MB 1277ms 57ms kotlin/native 1.8.0

edigits

Input: 250001

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 395ms 1.0ms 98.1MB 377ms 10ms bun 0.5.1
javascript 1.js 404ms 1.7ms 61.3MB 407ms 17ms node 19.5.0

Input: 100000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 188ms 0.3ms 52.6MB 193ms 10ms node 19.5.0
javascript 1.js 415ms 0.9ms 86.8MB 393ms 17ms bun 0.5.1

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
kotlin 1.kt 2.4ms 0.6ms 2.7MB 0ms 0ms kotlin/native 1.8.0
javascript 1.js 15ms 1.1ms 55.5MB 0ms 0ms bun 0.5.1
javascript 1.js 43ms 0.7ms 43.1MB 30ms 2ms node 19.5.0
kotlin 1.kt 68ms 1.8ms 40.9MB 50ms 4ms 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 134ms 11ms 92.4MB 80ms 50ms bun 0.5.1
javascript 1.js 3863ms 30ms 155.6MB 1723ms 377ms node 19.5.0
kotlin 1.kt timeout 0.0ms 251.2MB 8897ms 667ms kotlin/jvm 17.0.2
kotlin 2.kt timeout 0.0ms 311.1MB 8893ms 620ms 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 92ms 8.9ms 70.9MB 20ms 27ms bun 0.5.1
javascript 1.js 368ms 5.6ms 71.7MB 370ms 57ms node 19.5.0
kotlin 2.kt 2540ms 64ms 201.4MB 2793ms 183ms kotlin/jvm 17.0.2
kotlin 1-m.kt 2622ms 5.8ms 190.0MB 4000ms 290ms 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 0.9ms 89.9MB 113ms 7ms bun 0.5.1
javascript 1.js 167ms 3.7ms 74.1MB 143ms 17ms node 19.5.0
kotlin 1-m.kt 1142ms 8.4ms 217.5MB 1933ms 87ms 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 724ms 2.7ms 262.1MB 703ms 47ms bun 0.5.1
javascript 1.js 1074ms 4.5ms 282.1MB 1017ms 117ms node 19.5.0
kotlin 1-m.kt 4104ms 270ms 1188.0MB 5900ms 297ms 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 223ms 7.8ms 113.7MB 313ms 33ms kotlin/jvm 17.0.2
kotlin 1.kt 235ms 8.3ms 109.5MB 287ms 27ms kotlin/jvm 17.0.2
javascript 2.js 379ms 5.0ms 54.5MB 367ms 3ms node 19.5.0
kotlin 2-m.kt 447ms 4.4ms 42.5MB 747ms 3ms kotlin/native 1.8.0
javascript 1.js 569ms 2.9ms 146.2MB 560ms 20ms bun 0.5.1
javascript 2.js 794ms 2.8ms 109.1MB 793ms 23ms bun 0.5.1
javascript 1.js 1035ms 3.1ms 62.2MB 1017ms 10ms node 19.5.0
kotlin 1.kt timeout 0.0ms 15.0MB 5000ms 3ms 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 370ms 3.7ms 113.5MB 463ms 37ms kotlin/jvm 17.0.2
kotlin 1.kt 456ms 3.4ms 132.4MB 513ms 17ms kotlin/jvm 17.0.2
javascript 2.js 1011ms 4.7ms 62.0MB 997ms 10ms node 19.5.0
kotlin 2-m.kt 1371ms 27ms 145.0MB 2247ms 63ms kotlin/native 1.8.0
javascript 1.js 1591ms 8.0ms 169.9MB 1617ms 17ms bun 0.5.1
javascript 2.js 2293ms 4.9ms 121.0MB 2300ms 13ms bun 0.5.1
javascript 1.js 2977ms 2.8ms 61.6MB 2947ms 20ms node 19.5.0
kotlin 1.kt timeout 0.0ms 15.0MB 4997ms 3ms 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 171ms 5.5ms 74.0MB 233ms 13ms kotlin/jvm 17.0.2
kotlin 2-m.kt 182ms 4.2ms 78.2MB 253ms 20ms kotlin/jvm 17.0.2
javascript 2.js 207ms 4.0ms 48.5MB 197ms 3ms node 19.5.0
kotlin 2-m.kt 230ms 8.2ms 32.3MB 390ms 7ms kotlin/native 1.8.0
javascript 1.js 291ms 8.0ms 117.4MB 280ms 17ms bun 0.5.1
javascript 1.js 376ms 1.8ms 49.8MB 363ms 7ms node 19.5.0
javascript 2.js 428ms 4.2ms 100.7MB 437ms 10ms bun 0.5.1
kotlin 1.kt timeout 0.0ms 17.1MB 4993ms 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 462ms 24ms 560.0MB 447ms 70ms kotlin/jvm 17.0.2
javascript 1.js 742ms 11ms 158.6MB 820ms 33ms bun 0.5.1
javascript 1.js 773ms 6.5ms 122.2MB 777ms 57ms node 19.5.0
kotlin 1-m.kt 2769ms 141ms 140.6MB 4437ms 550ms kotlin/native 1.8.0

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 172ms 1.9ms 108.9MB 163ms 13ms bun 0.5.1
kotlin 1.kt 178ms 1.2ms 221.3MB 157ms 50ms kotlin/jvm 17.0.2
javascript 1.js 228ms 7.2ms 90.2MB 213ms 33ms node 19.5.0
kotlin 1-m.kt 520ms 3.0ms 38.4MB 823ms 90ms 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 558ms 17ms 1.5MB 550ms 0ms kotlin/native 1.8.0
kotlin 1.kt 573ms 5.3ms 42.8MB 577ms 17ms kotlin/jvm 17.0.2
javascript 6.js 603ms 4.1ms 47.2MB 590ms 7ms node 19.5.0
javascript 6.js 1010ms 1.0ms 63.9MB 1000ms 7ms bun 0.5.1

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
kotlin 1n.kt 59ms 1.8ms 1.5MB 47ms 0ms kotlin/native 1.8.0
javascript 6.js 106ms 3.3ms 47.3MB 97ms 3ms node 19.5.0
javascript 6.js 122ms 2.4ms 70.0MB 120ms 3ms bun 0.5.1
kotlin 1.kt 137ms 3.7ms 42.8MB 143ms 7ms kotlin/jvm 17.0.2

secp256k1

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 3041ms 28ms 103.8MB 3063ms 20ms bun 0.5.1
javascript 1.js 3314ms 17ms 51.9MB 3310ms 13ms node 19.5.0
kotlin 1.kt 4484ms 24ms 183.5MB 5367ms 77ms kotlin/jvm 17.0.2

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 784ms 3.2ms 104.0MB 787ms 13ms bun 0.5.1
javascript 1.js 875ms 5.7ms 50.0MB 877ms 0ms node 19.5.0
kotlin 1-m.kt 1366ms 12ms 187.1MB 2070ms 50ms 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.1MB 4987ms 13ms node 19.5.0
kotlin 1.kt timeout 0.0ms 209.1MB 5367ms 70ms kotlin/jvm 17.0.2
kotlin 1n.kt timeout 0.0ms 8.9MB 6317ms 127ms kotlin/native 1.8.0
kotlin 2n.kt timeout 0.0ms 10.5MB 5033ms 87ms kotlin/native 1.8.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
kotlin 1.kt 1451ms 36ms 224.1MB 1807ms 43ms kotlin/jvm 17.0.2
javascript 3.js 1552ms 3.1ms 62.9MB 1550ms 7ms node 19.5.0
kotlin 1n.kt timeout 0.0ms 14.9MB 6290ms 127ms kotlin/native 1.8.0
kotlin 2n.kt timeout 0.0ms 9.1MB 5033ms 93ms kotlin/native 1.8.0

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 6-m.js 2755ms 8.6ms 69.5MB 5193ms 17ms node 19.5.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 6-m.js 847ms 18ms 69.1MB 1480ms 17ms node 19.5.0

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 6.js 388ms 18ms 70.3MB 527ms 20ms node 19.5.0