Typescript VS Nim 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
nim 2.nim 1938ms 2.8ms 35.0MB 1920ms 3ms nim 1.6.10
nim 2.nim 2100ms 32ms 35.2MB 2080ms 3ms nim/clang 1.6.10
typescript 1.ts 3653ms 166ms 149.5MB 3550ms 543ms deno 1.30.0

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 1.ts 155ms 13ms 56.9MB 177ms 3ms deno 1.30.0
nim 2.nim 186ms 2.3ms 5.5MB 170ms 0ms nim 1.6.10
nim 2.nim 199ms 5.2ms 5.7MB 183ms 0ms nim/clang 1.6.10

coro-prime-sieve

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 1.ts 2033ms 48ms 70.9MB 2050ms 23ms deno 1.30.0
nim 1.nim timeout 0.0ms 425.4MB 3303ms 1340ms nim 1.6.10
nim 1.nim timeout 0.0ms 427.7MB 3400ms 1247ms nim/clang 1.6.10

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 1.ts 169ms 0.2ms 45.2MB 160ms 3ms deno 1.30.0
nim 1.nim timeout 0.0ms 425.1MB 3457ms 1193ms nim 1.6.10
nim 1.nim timeout 0.0ms 427.4MB 3410ms 1237ms nim/clang 1.6.10

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 2.nim 269ms 0.5ms 1.1MB 260ms 0ms nim 1.6.10
nim 2.nim 335ms 0.5ms 1.3MB 323ms 0ms nim/clang 1.6.10
nim 1.nim 771ms 2.9ms 1.1MB 663ms 90ms nim 1.6.10
nim 1.nim 796ms 0.7ms 1.3MB 693ms 87ms nim/clang 1.6.10
typescript 1.ts 2032ms 2.8ms 38.7MB 1927ms 113ms deno 1.30.0

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 2.nim 29ms 0.9ms 1.0MB 20ms 0ms nim 1.6.10
nim 2.nim 36ms 0.4ms 1.3MB 30ms 0ms nim/clang 1.6.10
nim 1.nim 81ms 2.9ms 1.0MB 57ms 10ms nim 1.6.10
nim 1.nim 83ms 1.2ms 1.2MB 63ms 3ms nim/clang 1.6.10
typescript 1.ts 264ms 46ms 39.0MB 230ms 17ms deno 1.30.0

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 1.nim 1.2ms 0.2ms 1.0MB 0ms 0ms nim 1.6.10
nim 1.nim 2.0ms 0.4ms 1.3MB 0ms 0ms nim/clang 1.6.10
typescript 1.ts 26ms 1.3ms 31.8MB 14ms 2ms deno 1.30.0

http-server

Input: 3000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 1.nim 725ms 4.3ms 93.6MB 280ms 417ms nim/clang 1.6.10
nim 1.nim 731ms 3.4ms 94.6MB 310ms 390ms nim 1.6.10
typescript 2.ts 1017ms 20ms 136.6MB 1133ms 307ms deno 1.30.0
typescript 2-tls.ts 1239ms 15ms 148.0MB 1353ms 320ms deno 1.30.0
typescript 1-http2.ts 1291ms 9.3ms 138.9MB 1500ms 320ms deno 1.30.0
typescript 1.ts 1396ms 78ms 133.3MB 1190ms 307ms deno 1.30.0

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 1.nim 123ms 0.8ms 18.7MB 53ms 57ms nim/clang 1.6.10
nim 1.nim 125ms 0.5ms 18.2MB 53ms 57ms nim 1.6.10
typescript 2.ts 219ms 13ms 71.7MB 143ms 53ms deno 1.30.0
typescript 1.ts 223ms 6.3ms 74.6MB 150ms 53ms deno 1.30.0
typescript 1-http2.ts 261ms 9.6ms 62.4MB 190ms 63ms deno 1.30.0
typescript 2-tls.ts 396ms 2.2ms 76.5MB 317ms 57ms deno 1.30.0

json-serde

Input: sample 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 1.ts 369ms 3.7ms 91.5MB 370ms 27ms deno 1.30.0

Input: canada 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 1.ts 3298ms 12ms 384.1MB 3437ms 140ms deno 1.30.0

lru

Input: 1000 1000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 2.nim 145ms 0.9ms 1.3MB 137ms 0ms nim/clang 1.6.10
nim 2.nim 152ms 0.5ms 1.0MB 140ms 0ms nim 1.6.10
typescript 2.ts 356ms 1.7ms 44.5MB 350ms 10ms deno 1.30.0
typescript 1.ts 782ms 18ms 44.9MB 753ms 7ms deno 1.30.0
nim 1.nim timeout 0.0ms 1.1MB 4987ms 0ms nim 1.6.10
nim 1.nim timeout 0.0ms 1.3MB 4987ms 0ms nim/clang 1.6.10

Input: 1000 3000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 2.nim 430ms 0.9ms 1.2MB 420ms 0ms nim/clang 1.6.10
nim 2.nim 448ms 0.4ms 1.1MB 440ms 0ms nim 1.6.10
typescript 2.ts 980ms 2.2ms 44.4MB 973ms 3ms deno 1.30.0
typescript 1.ts 2219ms 1.2ms 44.7MB 2210ms 0ms deno 1.30.0
nim 1.nim timeout 0.0ms 1.0MB 4987ms 0ms nim 1.6.10
nim 1.nim timeout 0.0ms 1.3MB 4990ms 0ms nim/clang 1.6.10

Input: 100 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 2.nim 64ms 1.3ms 1.2MB 53ms 0ms nim/clang 1.6.10
nim 2.nim 65ms 1.8ms 1.0MB 57ms 0ms nim 1.6.10
typescript 2.ts 183ms 3.4ms 38.4MB 177ms 3ms deno 1.30.0
typescript 1.ts 229ms 4.3ms 39.0MB 197ms 7ms deno 1.30.0
nim 1.nim 390ms 2.5ms 1.2MB 380ms 0ms nim/clang 1.6.10
nim 1.nim 442ms 4.8ms 1.1MB 433ms 0ms nim 1.6.10

merkletrees

Input: 17

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 1.ts 659ms 4.3ms 92.0MB 670ms 30ms deno 1.30.0
nim 1.nim 998ms 1.8ms 34.7MB 977ms 7ms nim 1.6.10
nim 1.nim 1034ms 9.1ms 34.9MB 1013ms 7ms nim/clang 1.6.10

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 1.ts 172ms 1.6ms 59.8MB 173ms 10ms deno 1.30.0
nim 1.nim 213ms 0.3ms 9.3MB 200ms 0ms nim 1.6.10
nim 1.nim 221ms 0.9ms 9.5MB 207ms 0ms nim/clang 1.6.10

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 2.nim 383ms 1.7ms 1.4MB 370ms 0ms nim 1.6.10
nim 2.nim 411ms 1.3ms 1.3MB 400ms 0ms nim/clang 1.6.10
typescript 6.ts 653ms 21ms 37.8MB 637ms 7ms deno 1.30.0

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 2.nim 40ms 0.1ms 1.3MB 30ms 0ms nim 1.6.10
nim 2.nim 43ms 0.1ms 1.3MB 33ms 0ms nim/clang 1.6.10
typescript 6.ts 96ms 1.8ms 37.9MB 83ms 0ms deno 1.30.0

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 1.nim timeout 0.0ms 5.9MB 4987ms 0ms nim 1.6.10
nim 1.nim timeout 0.0ms 6.1MB 4983ms 3ms nim/clang 1.6.10
typescript 3.ts timeout 0.0ms 79.4MB 4950ms 40ms deno 1.30.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 3.ts 1493ms 5.5ms 58.9MB 1433ms 67ms deno 1.30.0
nim 1.nim timeout 0.0ms 5.9MB 4987ms 0ms nim 1.6.10
nim 1.nim timeout 0.0ms 6.1MB 4990ms 0ms nim/clang 1.6.10

secp256k1

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 1.ts 2444ms 60ms 39.0MB 2407ms 13ms deno 1.30.0

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 1.ts 635ms 5.1ms 37.6MB 637ms 7ms deno 1.30.0

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 1.nim 4118ms 0.9ms 1.3MB 4110ms 0ms nim/clang 1.6.10
nim 1.nim 4119ms 0.1ms 1.3MB 4107ms 0ms nim 1.6.10
typescript 7.ts 4864ms 45ms 39.0MB 4833ms 3ms deno 1.30.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 1.nim 1031ms 0.3ms 1.3MB 1020ms 0ms nim/clang 1.6.10
nim 1.nim 1032ms 1.1ms 1.3MB 1020ms 0ms nim 1.6.10
typescript 7.ts 1237ms 3.1ms 38.3MB 1227ms 3ms deno 1.30.0

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 1.nim 259ms 0.1ms 1.3MB 250ms 0ms nim/clang 1.6.10
nim 1.nim 260ms 0.4ms 1.3MB 250ms 0ms nim 1.6.10
typescript 7.ts 368ms 57ms 37.9MB 327ms 7ms deno 1.30.0