Crystal VS Typescript 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
crystal 1.cr 1798ms 15ms 64.1MB 1773ms 10ms crystal 1.7.2
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
crystal 1.cr 142ms 4.4ms 10.9MB 127ms 0ms crystal 1.7.2
typescript 1.ts 155ms 13ms 56.9MB 177ms 3ms deno 1.30.0

coro-prime-sieve

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 1.cr 1723ms 16ms 20.3MB 1677ms 30ms crystal 1.7.2
typescript 1.ts 2033ms 48ms 70.9MB 2050ms 23ms deno 1.30.0

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 1.cr 97ms 2.1ms 7.3MB 80ms 3ms crystal 1.7.2
typescript 1.ts 169ms 0.2ms 45.2MB 160ms 3ms deno 1.30.0

edigits

Input: 250001

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 1.cr 82ms 3.6ms 6.3MB 60ms 3ms crystal 1.7.2

Input: 100000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 1.cr 30ms 0.2ms 5.1MB 17ms 0ms crystal 1.7.2

fannkuch-redux

Input: 11

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 1.cr 3778ms 3.4ms 3.0MB 3763ms 0ms crystal 1.7.2

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 1.cr 311ms 0.6ms 3.0MB 300ms 0ms crystal 1.7.2

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 2.cr 830ms 0.4ms 3.3MB 717ms 100ms crystal 1.7.2
crystal 1.cr 1067ms 0.1ms 14.6MB 943ms 103ms crystal 1.7.2
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
crystal 2.cr 87ms 0.9ms 3.2MB 67ms 7ms crystal 1.7.2
crystal 1.cr 111ms 0.9ms 4.5MB 83ms 10ms crystal 1.7.2
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
crystal 1.cr 2.2ms 0.7ms 2.9MB 0ms 0ms crystal 1.7.2
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
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
crystal 1.cr 3823ms 535ms 207.8MB 477ms 303ms crystal 1.7.2

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
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
crystal 1.cr 1214ms 105ms 51.9MB 63ms 43ms crystal 1.7.2

lru

Input: 1000 1000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 0-unsafe.cr 55ms 1.1ms 3.0MB 43ms 0ms crystal 1.7.2
crystal 1.cr 96ms 0.2ms 3.0MB 90ms 0ms crystal 1.7.2
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

Input: 1000 3000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 0-unsafe.cr 160ms 1.1ms 3.0MB 150ms 0ms crystal 1.7.2
crystal 1.cr 282ms 0.2ms 3.0MB 270ms 0ms crystal 1.7.2
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

Input: 100 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 0-unsafe.cr 27ms 0.3ms 2.9MB 20ms 0ms crystal 1.7.2
crystal 1.cr 48ms 0.4ms 3.0MB 40ms 0ms crystal 1.7.2
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

mandelbrot

Input: 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 1.cr 490ms 1.8ms 9.5MB 480ms 0ms crystal 1.7.2

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 1.cr 26ms 0.1ms 6.8MB 17ms 0ms crystal 1.7.2

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
crystal 1.cr 1288ms 25ms 64.1MB 1253ms 20ms crystal 1.7.2

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
crystal 1.cr 221ms 5.3ms 22.4MB 207ms 0ms crystal 1.7.2

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 1.cr 514ms 1.1ms 3.0MB 500ms 0ms crystal 1.7.2
crystal 2.cr 535ms 0.2ms 2.9MB 530ms 0ms crystal 1.7.2
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
crystal 1.cr 54ms 0.2ms 2.9MB 43ms 0ms crystal 1.7.2
crystal 2.cr 56ms 0.1ms 2.9MB 43ms 0ms crystal 1.7.2
typescript 6.ts 96ms 1.8ms 37.9MB 83ms 0ms deno 1.30.0

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 2.cr 462ms 0.6ms 7.8MB 450ms 0ms crystal 1.7.2
crystal 1.cr 780ms 7.6ms 42.0MB 760ms 0ms crystal 1.7.2

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 2.cr 105ms 0.1ms 4.1MB 97ms 0ms crystal 1.7.2
crystal 1.cr 133ms 0.7ms 12.9MB 120ms 0ms crystal 1.7.2

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 1.cr 2575ms 99ms 7.3MB 2547ms 10ms crystal 1.7.2
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
crystal 1.cr 588ms 11ms 5.1MB 570ms 3ms crystal 1.7.2
typescript 3.ts 1493ms 5.5ms 58.9MB 1433ms 67ms deno 1.30.0

regex-redux

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 1.cr 2371ms 12ms 174.0MB 2317ms 37ms crystal 1.7.2

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 1.cr 249ms 1.9ms 32.1MB 227ms 7ms crystal 1.7.2

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 7.ts 4864ms 45ms 39.0MB 4833ms 3ms deno 1.30.0
crystal 1.cr timeout 0.0ms 4.1MB 4987ms 0ms crystal 1.7.2

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 7.ts 1237ms 3.1ms 38.3MB 1227ms 3ms deno 1.30.0
crystal 1.cr 1559ms 1.5ms 3.8MB 1543ms 0ms crystal 1.7.2

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 7.ts 368ms 57ms 37.9MB 327ms 7ms deno 1.30.0
crystal 1.cr 397ms 2.4ms 3.8MB 390ms 0ms crystal 1.7.2