Javascript VS Typescript benchmarks

Current benchmark data was generated on Mon Dec 30 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 948ms 19ms 199.4MB 1457ms 273ms bun 1.1.42
javascript 1-m.js 1223ms 9.8ms 294.3MB 2110ms 150ms node 23.5.0
typescript 1-m.ts 1258ms 2.9ms 252.6MB 2200ms 157ms deno 2.1.4

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 96ms 2.2ms 78.6MB 67ms 33ms bun 1.1.42
javascript 1.js 124ms 2.0ms 82.5MB 120ms 33ms node 23.5.0
typescript 1.ts 127ms 1.7ms 83.1MB 130ms 27ms deno 2.1.4

coro-prime-sieve

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 1.ts 1329ms 2.8ms 89.1MB 1380ms 33ms deno 2.1.4
javascript 1.js 1578ms 6.8ms 94.6MB 1660ms 50ms node 23.5.0
javascript 1.js 2195ms 13ms 99.3MB 2210ms 63ms bun 1.1.42

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 1.ts 148ms 2.7ms 73.9MB 117ms 30ms deno 2.1.4
javascript 1.js 154ms 1.5ms 76.7MB 143ms 17ms node 23.5.0
javascript 1.js 181ms 3.1ms 85.1MB 203ms 27ms bun 1.1.42

edigits

Input: 250001

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 270ms 2.7ms 69.0MB 283ms 23ms node 23.5.0
javascript 1.js 718ms 5.1ms 76.4MB 690ms 23ms bun 1.1.42

Input: 100000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 125ms 2.5ms 65.6MB 140ms 13ms node 23.5.0
javascript 1.js 524ms 4.8ms 66.2MB 503ms 13ms bun 1.1.42

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 12ms 0.6ms 31.5MB 10ms 0ms bun 1.1.42
typescript 1.ts 28ms 0.7ms 50.8MB 10ms 8ms deno 2.1.4
javascript 1.js 31ms 0.3ms 51.9MB 14ms 6ms node 23.5.0

http-server

Input: 3000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1-m.bun.js 343ms 27ms 70.2MB 127ms 393ms bun 1.1.42
typescript 1-m.ts 683ms 15ms 222.8MB 570ms 460ms deno 2.1.4
typescript 2.ts 693ms 18ms 223.9MB 613ms 420ms deno 2.1.4
typescript 1-http2.ts 845ms 19ms 218.4MB 767ms 420ms deno 2.1.4
typescript 2-tls.ts 1416ms 16ms 239.9MB 1263ms 487ms deno 2.1.4
javascript 1.js 3271ms 270ms 197.4MB 3033ms 1503ms node 23.5.0

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.bun.js 135ms 29ms 54.0MB 27ms 100ms bun 1.1.42
typescript 2.ts 183ms 6.4ms 98.3MB 133ms 97ms deno 2.1.4
typescript 1.ts 184ms 6.2ms 98.4MB 160ms 70ms deno 2.1.4
typescript 1-http2.ts 228ms 7.1ms 99.6MB 180ms 93ms deno 2.1.4
javascript 1.js 390ms 12ms 85.4MB 337ms 130ms node 23.5.0
typescript 2-tls.ts 415ms 10ms 103.7MB 313ms 140ms deno 2.1.4

json-serde

Input: sample 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 85ms 8.1ms 65.6MB 53ms 20ms bun 1.1.42
javascript 1.js 109ms 1.6ms 79.3MB 93ms 23ms node 23.5.0
typescript 1.ts 166ms 0.3ms 95.2MB 163ms 27ms deno 2.1.4

Input: canada 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 385ms 1.5ms 206.9MB 353ms 73ms bun 1.1.42
javascript 1.js 687ms 1.9ms 205.2MB 787ms 83ms node 23.5.0
typescript 1.ts 1228ms 2.9ms 430.2MB 1360ms 127ms deno 2.1.4

lru

Input: 1000 1000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 2.ts 266ms 6.8ms 67.2MB 257ms 13ms deno 2.1.4
javascript 2.js 306ms 0.5ms 66.9MB 300ms 10ms node 23.5.0
javascript 1.js 550ms 5.0ms 64.9MB 537ms 7ms node 23.5.0
typescript 1.ts 567ms 5.6ms 63.3MB 550ms 13ms deno 2.1.4
javascript 2.js 637ms 6.3ms 122.1MB 687ms 57ms bun 1.1.42
javascript 1.js 815ms 6.2ms 105.9MB 870ms 90ms bun 1.1.42

Input: 1000 3000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 2.ts 720ms 7.6ms 73.8MB 707ms 17ms deno 2.1.4
javascript 2.js 843ms 2.0ms 72.7MB 827ms 20ms node 23.5.0
javascript 1.js 1578ms 7.3ms 71.9MB 1553ms 20ms node 23.5.0
typescript 1.ts 1625ms 0.7ms 72.1MB 1607ms 13ms deno 2.1.4
javascript 2.js 1793ms 11ms 122.3MB 1913ms 83ms bun 1.1.42
javascript 1.js 2334ms 4.4ms 105.9MB 2607ms 137ms bun 1.1.42

Input: 100 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 2.ts 145ms 0.4ms 64.3MB 133ms 13ms deno 2.1.4
javascript 1.js 160ms 1.3ms 61.9MB 153ms 3ms node 23.5.0
javascript 2.js 163ms 0.4ms 60.9MB 163ms 3ms node 23.5.0
typescript 1.ts 167ms 1.1ms 61.2MB 150ms 10ms deno 2.1.4
javascript 1.js 311ms 3.7ms 113.6MB 340ms 70ms bun 1.1.42
javascript 2.js 357ms 12ms 125.4MB 377ms 57ms bun 1.1.42

merkletrees

Input: 17

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1-m.js 499ms 5.6ms 135.9MB 660ms 127ms bun 1.1.42
javascript 1.js 520ms 3.2ms 134.5MB 603ms 57ms node 23.5.0
typescript 1.ts 523ms 1.3ms 133.4MB 603ms 60ms deno 2.1.4

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 119ms 0.9ms 86.1MB 100ms 37ms bun 1.1.42
javascript 1.js 156ms 3.1ms 102.3MB 153ms 33ms node 23.5.0
typescript 1.ts 156ms 3.0ms 102.8MB 143ms 47ms deno 2.1.4

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 6.js 455ms 3.5ms 59.6MB 440ms 7ms node 23.5.0
typescript 6.ts 465ms 1.7ms 58.1MB 453ms 3ms deno 2.1.4
javascript 6.js 659ms 1.5ms 44.6MB 657ms 7ms bun 1.1.42

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 6.js 76ms 0.7ms 59.8MB 63ms 7ms node 23.5.0
typescript 6.ts 78ms 1.9ms 58.8MB 60ms 13ms deno 2.1.4
javascript 6.js 87ms 0.3ms 44.6MB 77ms 7ms bun 1.1.42

secp256k1

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 1.ts 1906ms 6.7ms 62.8MB 1907ms 13ms deno 2.1.4
javascript 1.js 2480ms 11ms 64.4MB 2493ms 10ms node 23.5.0
javascript 1.js 2760ms 36ms 83.0MB 2793ms 37ms bun 1.1.42

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 1.ts 516ms 6.2ms 59.5MB 517ms 17ms deno 2.1.4
javascript 1.js 657ms 7.0ms 61.8MB 663ms 13ms node 23.5.0
javascript 1.js 718ms 2.9ms 82.6MB 703ms 37ms bun 1.1.42

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 3.js timeout 0.0ms 92.1MB 4983ms 23ms node 23.5.0
typescript 3.ts timeout 0.0ms 101.8MB 4967ms 43ms deno 2.1.4

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 3.js 1085ms 5.9ms 74.8MB 1063ms 17ms node 23.5.0
typescript 3.ts 1302ms 8.8ms 79.8MB 1250ms 77ms deno 2.1.4

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 6-m.js 2147ms 4.1ms 116.2MB 8220ms 60ms node 23.5.0
typescript 7.ts 4021ms 24ms 60.7MB 4007ms 10ms deno 2.1.4

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 6-m.js 639ms 4.2ms 115.4MB 2287ms 50ms node 23.5.0
typescript 7.ts 1041ms 6.3ms 58.1MB 1027ms 3ms deno 2.1.4

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 6-m.js 261ms 2.9ms 113.2MB 807ms 37ms node 23.5.0
typescript 7.ts 284ms 0.7ms 58.4MB 263ms 10ms deno 2.1.4