Nim VS Typescript benchmarks

Current benchmark data was generated on Wed Sep 28 2022, 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 3344ms 2.3ms 35.2MB 3323ms 3ms nim/clang 1.6.8
typescript 1.ts 3437ms 95ms 199.6MB 3450ms 577ms deno 1.25.4
nim 2.nim 3490ms 2.8ms 34.6MB 3467ms 10ms nim 1.6.8

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 1.ts 135ms 1.5ms 50.6MB 130ms 10ms deno 1.25.4
nim 2.nim 315ms 0.7ms 5.7MB 303ms 0ms nim/clang 1.6.8
nim 2.nim 330ms 1.8ms 5.4MB 317ms 0ms nim 1.6.8

coro-prime-sieve

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 1.ts 1976ms 12ms 71.7MB 1987ms 27ms deno 1.25.4
nim 1.nim timeout 0.0ms 0.0MB 0ms 0ms nim 1.6.8
nim 1.nim timeout 0.0ms 0.0MB 0ms 0ms nim/clang 1.6.8

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 1.ts 176ms 3.7ms 44.2MB 167ms 0ms deno 1.25.4
nim 1.nim timeout 0.0ms 0.0MB 0ms 0ms nim 1.6.8
nim 1.nim timeout 0.0ms 0.0MB 0ms 0ms nim/clang 1.6.8

edigits

Input: 250001

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 1.nim timeout 0.0ms 0.0MB 0ms 0ms nim 1.6.8
nim 1.nim timeout 0.0ms 0.0MB 0ms 0ms nim/clang 1.6.8

Input: 100000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 1.nim timeout 0.0ms 0.0MB 0ms 0ms nim 1.6.8
nim 1.nim timeout 0.0ms 0.0MB 0ms 0ms nim/clang 1.6.8

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 2.nim 257ms 0.2ms 0.7MB 240ms 0ms nim 1.6.8
nim 2.nim 336ms 0.6ms 1.0MB 323ms 0ms nim/clang 1.6.8
nim 1.nim 788ms 5.6ms 0.7MB 703ms 67ms nim 1.6.8
nim 1.nim 807ms 0.6ms 1.0MB 720ms 70ms nim/clang 1.6.8
typescript 1.ts 2116ms 52ms 37.9MB 1977ms 123ms deno 1.25.4

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 2.nim 28ms 0.5ms 0.7MB 20ms 0ms nim 1.6.8
nim 2.nim 36ms 0.4ms 1.0MB 27ms 0ms nim/clang 1.6.8
nim 1.nim 81ms 0.6ms 0.7MB 57ms 10ms nim 1.6.8
nim 1.nim 84ms 0.9ms 0.9MB 70ms 0ms nim/clang 1.6.8
typescript 1.ts 272ms 7.2ms 38.2MB 230ms 17ms deno 1.25.4

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 1.nim 1.6ms 0.9ms 1.6MB 0ms 0ms nim 1.6.8
nim 1.nim 2.0ms 0.8ms 1.0MB 0ms 0ms nim/clang 1.6.8
typescript 1.ts 29ms 1.1ms 31.2MB 16ms 0ms deno 1.25.4

http-server

Input: 3000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 1.nim 710ms 5.4ms 94.0MB 317ms 367ms nim 1.6.8
nim 1.nim 712ms 0.7ms 93.4MB 280ms 403ms nim/clang 1.6.8
typescript 1.ts 1006ms 4.6ms 136.7MB 1243ms 260ms deno 1.25.4
typescript 2.ts 1038ms 11ms 143.9MB 1280ms 270ms deno 1.25.4
typescript 2-tls.ts 1240ms 8.6ms 150.2MB 1427ms 333ms deno 1.25.4
typescript 1-http2.ts 1607ms 254ms 152.0MB 1467ms 323ms deno 1.25.4

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 1.nim 121ms 1.9ms 17.9MB 50ms 57ms nim 1.6.8
nim 1.nim 124ms 2.1ms 18.2MB 53ms 50ms nim/clang 1.6.8
typescript 2.ts 221ms 14ms 73.1MB 170ms 60ms deno 1.25.4
typescript 1.ts 229ms 11ms 77.0MB 177ms 57ms deno 1.25.4
typescript 1-http2.ts 276ms 35ms 75.8MB 230ms 50ms deno 1.25.4
typescript 2-tls.ts 391ms 11ms 83.2MB 347ms 50ms deno 1.25.4

lru

Input: 1000 1000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 2.nim 146ms 0.2ms 1.9MB 140ms 0ms nim/clang 1.6.8
nim 2.nim 158ms 2.6ms 0.7MB 150ms 0ms nim 1.6.8
typescript 2.ts 654ms 2.5ms 44.1MB 643ms 7ms deno 1.25.4
typescript 1.ts 1082ms 0.9ms 42.0MB 1067ms 7ms deno 1.25.4
nim 1.nim timeout 0.0ms 0.0MB 0ms 0ms nim 1.6.8
nim 1.nim timeout 0.0ms 0.0MB 0ms 0ms nim/clang 1.6.8

Input: 1000 3000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 2.nim 433ms 0.7ms 1.0MB 420ms 0ms nim/clang 1.6.8
nim 2.nim 465ms 0.3ms 0.7MB 457ms 0ms nim 1.6.8
typescript 2.ts 1896ms 41ms 50.0MB 1873ms 3ms deno 1.25.4
typescript 1.ts 3201ms 39ms 52.7MB 3160ms 10ms deno 1.25.4
nim 1.nim timeout 0.0ms 0.0MB 0ms 0ms nim 1.6.8
nim 1.nim timeout 0.0ms 0.0MB 0ms 0ms nim/clang 1.6.8

Input: 100 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 2.nim 64ms 0.8ms 0.9MB 53ms 0ms nim/clang 1.6.8
nim 2.nim 69ms 0.2ms 0.7MB 60ms 0ms nim 1.6.8
typescript 2.ts 331ms 0.5ms 38.0MB 333ms 0ms deno 1.25.4
typescript 1.ts 374ms 2.8ms 35.7MB 363ms 0ms deno 1.25.4
nim 1.nim 416ms 2.7ms 1.0MB 403ms 0ms nim/clang 1.6.8
nim 1.nim 495ms 34ms 0.7MB 483ms 0ms nim 1.6.8

mandelbrot

Input: 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 1.nim 574ms 0.4ms 4.7MB 560ms 0ms nim/clang 1.6.8
nim 1.nim 996ms 1.3ms 4.5MB 980ms 0ms nim 1.6.8

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 1.nim 26ms 0.3ms 1.0MB 20ms 0ms nim/clang 1.6.8
nim 1.nim 45ms 1.2ms 0.7MB 33ms 0ms nim 1.6.8

merkletrees

Input: 17

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 1.ts 660ms 13ms 90.7MB 667ms 17ms deno 1.25.4
nim 1.nim 1576ms 4.4ms 35.2MB 1553ms 10ms nim/clang 1.6.8
nim 1.nim 1655ms 3.7ms 34.6MB 1633ms 3ms nim 1.6.8

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 1.ts 210ms 2.6ms 56.5MB 170ms 10ms deno 1.25.4
nim 1.nim 339ms 0.5ms 9.9MB 330ms 0ms nim/clang 1.6.8
nim 1.nim 364ms 14ms 9.3MB 353ms 0ms nim 1.6.8

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 2.nim 404ms 0.3ms 0.9MB 390ms 0ms nim/clang 1.6.8
nim 2.nim 427ms 0.5ms 1.0MB 420ms 0ms nim 1.6.8
typescript 6.ts 651ms 14ms 37.4MB 643ms 0ms deno 1.25.4

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 2.nim 43ms 1.2ms 1.0MB 33ms 0ms nim/clang 1.6.8
nim 2.nim 45ms 0.8ms 1.0MB 33ms 0ms nim 1.6.8
typescript 6.ts 100ms 1.9ms 37.1MB 90ms 3ms deno 1.25.4

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 1.nim 525ms 30ms 41.2MB 507ms 0ms nim 1.6.8
nim 1.nim 551ms 31ms 41.0MB 530ms 3ms nim/clang 1.6.8
nim 2.nim 598ms 1.5ms 6.6MB 587ms 0ms nim/clang 1.6.8
nim 2.nim 635ms 1.3ms 6.1MB 627ms 0ms nim 1.6.8

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 1.nim 127ms 0.8ms 11.1MB 120ms 0ms nim 1.6.8
nim 1.nim 129ms 4.5ms 11.3MB 117ms 0ms nim/clang 1.6.8
nim 2.nim 138ms 0.8ms 3.3MB 123ms 0ms nim/clang 1.6.8
nim 2.nim 151ms 0.4ms 3.0MB 140ms 0ms nim 1.6.8

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 1.nim timeout 0.0ms 0.0MB 0ms 0ms nim 1.6.8
nim 1.nim timeout 0.0ms 0.0MB 0ms 0ms nim/clang 1.6.8
typescript 3.ts timeout 0.0ms 0.0MB 0ms 0ms deno 1.25.4

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 3.ts 1508ms 6.0ms 57.7MB 1500ms 77ms deno 1.25.4
nim 1.nim timeout 0.0ms 0.0MB 0ms 0ms nim 1.6.8
nim 1.nim timeout 0.0ms 0.0MB 0ms 0ms nim/clang 1.6.8

regex-redux

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 1.nim 2565ms 5.6ms 167.2MB 2520ms 33ms nim 1.6.8
nim 1.nim 2568ms 4.8ms 167.8MB 2523ms 27ms nim/clang 1.6.8

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 1.nim 264ms 0.7ms 16.7MB 247ms 3ms nim 1.6.8
nim 1.nim 264ms 2.3ms 17.0MB 250ms 0ms nim/clang 1.6.8

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 1.nim 4118ms 1.2ms 1.8MB 4110ms 0ms nim/clang 1.6.8
nim 1.nim 4120ms 4.8ms 1.8MB 4107ms 0ms nim 1.6.8
typescript 7.ts 4863ms 22ms 37.1MB 4830ms 7ms deno 1.25.4

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 1.nim 1031ms 0.3ms 0.9MB 1017ms 0ms nim 1.6.8
nim 1.nim 1032ms 0.5ms 1.0MB 1017ms 0ms nim/clang 1.6.8
typescript 7.ts 1251ms 11ms 36.9MB 1227ms 3ms deno 1.25.4

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
nim 1.nim 260ms 0.7ms 1.0MB 247ms 0ms nim 1.6.8
nim 1.nim 260ms 0.3ms 1.0MB 250ms 0ms nim/clang 1.6.8
typescript 7.ts 364ms 2.9ms 37.1MB 327ms 3ms deno 1.25.4