Javascript VS Typescript 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
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
typescript 1-m.ts 1432ms 22ms 190.5MB 2300ms 300ms deno 1.40.2

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
typescript 1.ts 138ms 0.4ms 95.4MB 133ms 37ms deno 1.40.2
javascript 1.js 140ms 0.6ms 87.4MB 130ms 37ms node 21.6.1

coro-prime-sieve

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 1.ts 1435ms 3.7ms 90.9MB 1497ms 53ms deno 1.40.2
javascript 1.js 1658ms 4.8ms 83.7MB 1777ms 50ms node 21.6.1
javascript 1.js 2362ms 19ms 128.2MB 2397ms 37ms bun 1.0.25

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 1.ts 155ms 2.8ms 71.7MB 133ms 27ms deno 1.40.2
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

edigits

Input: 250001

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 292ms 3.6ms 58.3MB 310ms 27ms node 21.6.1
javascript 1.js 445ms 1.2ms 107.5MB 427ms 13ms bun 1.0.25

Input: 100000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 141ms 2.5ms 54.1MB 167ms 13ms node 21.6.1
javascript 1.js 357ms 27ms 97.4MB 340ms 13ms bun 1.0.25

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 14ms 0.3ms 65.6MB 0ms 10ms bun 1.0.25
typescript 1.ts 27ms 0.7ms 51.1MB 8ms 4ms deno 1.40.2
javascript 1.js 34ms 0.8ms 44.0MB 16ms 6ms node 21.6.1

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
typescript 2-m.ts 950ms 13ms 168.7MB 1003ms 447ms deno 1.40.2
typescript 1-m.ts 982ms 39ms 167.3MB 1020ms 480ms deno 1.40.2
typescript 2-tls.ts 1138ms 20ms 170.2MB 1173ms 490ms deno 1.40.2
typescript 1-http2.ts 1144ms 47ms 167.1MB 1200ms 470ms deno 1.40.2
javascript 1-m.js 3227ms 733ms 217.5MB 3567ms 1320ms node 21.6.1

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
typescript 2.ts 223ms 8.6ms 91.5MB 120ms 100ms deno 1.40.2
typescript 1.ts 231ms 16ms 95.2MB 143ms 77ms deno 1.40.2
typescript 1-http2.ts 271ms 15ms 90.4MB 173ms 87ms deno 1.40.2
typescript 2-tls.ts 385ms 15ms 96.0MB 270ms 103ms deno 1.40.2
javascript 1.js 418ms 5.4ms 71.0MB 390ms 117ms node 21.6.1

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
typescript 1.ts 186ms 4.1ms 93.9MB 173ms 37ms deno 1.40.2

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
typescript 1.ts 1301ms 3.0ms 435.2MB 1487ms 120ms deno 1.40.2

lru

Input: 1000 1000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 2.ts 267ms 4.6ms 63.9MB 250ms 17ms deno 1.40.2
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
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
typescript 1.ts 528ms 2.2ms 64.6MB 513ms 13ms deno 1.40.2

Input: 1000 3000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 2.ts 719ms 8.2ms 72.2MB 720ms 13ms deno 1.40.2
javascript 2.js 865ms 1.6ms 64.0MB 853ms 17ms node 21.6.1
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
typescript 1.ts 1515ms 8.0ms 69.7MB 1503ms 13ms deno 1.40.2

Input: 100 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 2.ts 142ms 0.4ms 61.9MB 133ms 10ms deno 1.40.2
typescript 1.ts 163ms 0.4ms 60.1MB 150ms 10ms deno 1.40.2
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
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
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
typescript 1.ts 554ms 0.7ms 130.9MB 633ms 73ms deno 1.40.2

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
javascript 1.js 163ms 2.8ms 90.9MB 167ms 33ms node 21.6.1
typescript 1.ts 166ms 3.3ms 99.0MB 160ms 47ms deno 1.40.2

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 6.ts 456ms 4.6ms 57.6MB 440ms 7ms deno 1.40.2
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
typescript 6.ts 78ms 1.2ms 57.7MB 57ms 13ms deno 1.40.2
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

secp256k1

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 1.ts 1958ms 9.9ms 60.2MB 1957ms 13ms deno 1.40.2
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

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 1.ts 532ms 1.9ms 59.6MB 527ms 13ms deno 1.40.2
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

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 3.js timeout 0.0ms 81.6MB 4987ms 23ms node 21.6.1
typescript 3.ts timeout 0.0ms 100.6MB 4977ms 53ms deno 1.40.2

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 3.js 1127ms 3.3ms 65.6MB 1113ms 23ms node 21.6.1
typescript 3.ts 1268ms 11ms 86.3MB 1210ms 73ms deno 1.40.2

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 6-m.js 2120ms 26ms 92.2MB 7783ms 97ms node 21.6.1
typescript 7.ts 4066ms 156ms 59.5MB 4050ms 13ms deno 1.40.2

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 6-m.js 636ms 17ms 91.5MB 2100ms 110ms node 21.6.1
typescript 7.ts 1002ms 27ms 57.1MB 993ms 7ms deno 1.40.2

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 6-m.js 260ms 4.6ms 91.2MB 737ms 90ms node 21.6.1
typescript 7.ts 263ms 2.7ms 57.1MB 243ms 10ms deno 1.40.2