Typescript VS Crystal benchmarks

Current benchmark data was generated on Sat Nov 16 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
crystal 1.cr 1357ms 14ms 64.3MB 1337ms 10ms crystal 1.14.0
typescript 1-m.ts 1478ms 105ms 193.8MB 2437ms 110ms deno 2.0.6

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 1.cr 110ms 3.0ms 11.1MB 93ms 0ms crystal 1.14.0
typescript 1.ts 126ms 1.5ms 79.7MB 130ms 23ms deno 2.0.6

coro-prime-sieve

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 1.cr 1420ms 28ms 20.1MB 1340ms 63ms crystal 1.14.0
typescript 1.ts 1463ms 8.7ms 90.2MB 1543ms 33ms deno 2.0.6

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 1.cr 78ms 1.8ms 7.5MB 50ms 10ms crystal 1.14.0
typescript 1.ts 147ms 2.3ms 73.7MB 123ms 27ms deno 2.0.6

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 2.cr 539ms 2.5ms 3.4MB 407ms 113ms crystal 1.14.0
crystal 1.cr 727ms 0.8ms 14.7MB 597ms 120ms crystal 1.14.0
typescript 1.ts 2123ms 6.4ms 58.6MB 1973ms 157ms deno 2.0.6

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 2.cr 59ms 1.6ms 3.4MB 40ms 3ms crystal 1.14.0
crystal 1.cr 77ms 1.6ms 4.5MB 50ms 10ms crystal 1.14.0
typescript 1.ts 249ms 1.6ms 58.5MB 227ms 20ms deno 2.0.6

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 1.cr 2.2ms 0.2ms 3.1MB 0ms 0ms crystal 1.14.0
typescript 1.ts 26ms 0.7ms 46.9MB 10ms 4ms deno 2.0.6

http-server

Input: 3000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 2-m.ts 954ms 20ms 158.9MB 873ms 567ms deno 2.0.6
typescript 1-m.ts 958ms 14ms 162.8MB 887ms 553ms deno 2.0.6
typescript 2-tls.ts 1121ms 10ms 163.7MB 1073ms 543ms deno 2.0.6
typescript 1-http2.ts 1161ms 18ms 169.3MB 1100ms 520ms deno 2.0.6
crystal 1.cr 2213ms 195ms 186.4MB 290ms 500ms crystal 1.14.0

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 1.ts 228ms 10.0ms 96.8MB 113ms 107ms deno 2.0.6
typescript 2.ts 238ms 15ms 97.6MB 140ms 93ms deno 2.0.6
typescript 1-http2.ts 296ms 9.7ms 93.6MB 183ms 90ms deno 2.0.6
typescript 2-tls.ts 397ms 4.8ms 98.4MB 277ms 110ms deno 2.0.6
crystal 1.cr 1222ms 100ms 53.8MB 27ms 83ms crystal 1.14.0

json-serde

Input: sample 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 1.ts 172ms 1.8ms 95.8MB 167ms 33ms deno 2.0.6

Input: canada 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 1.ts 1334ms 28ms 427.4MB 1503ms 133ms deno 2.0.6

lru

Input: 1000 1000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 0-unsafe.cr 36ms 0.9ms 3.1MB 23ms 0ms crystal 1.14.0
crystal 1.cr 65ms 0.9ms 3.1MB 53ms 0ms crystal 1.14.0
typescript 2.ts 270ms 3.1ms 66.0MB 257ms 17ms deno 2.0.6
typescript 1.ts 581ms 18ms 62.6MB 553ms 23ms deno 2.0.6

Input: 1000 3000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 0-unsafe.cr 100ms 0.6ms 3.1MB 90ms 0ms crystal 1.14.0
crystal 1.cr 183ms 1.6ms 3.1MB 170ms 0ms crystal 1.14.0
typescript 2.ts 721ms 14ms 73.8MB 703ms 27ms deno 2.0.6
typescript 1.ts 1617ms 9.1ms 69.3MB 1597ms 13ms deno 2.0.6

Input: 100 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 0-unsafe.cr 19ms 1.1ms 3.0MB 10ms 0ms crystal 1.14.0
crystal 1.cr 30ms 1.0ms 3.0MB 20ms 0ms crystal 1.14.0
typescript 2.ts 138ms 2.8ms 60.0MB 130ms 10ms deno 2.0.6
typescript 1.ts 193ms 42ms 59.6MB 177ms 13ms deno 2.0.6

merkletrees

Input: 17

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 1.ts 633ms 52ms 133.4MB 713ms 57ms deno 2.0.6
crystal 1.cr 804ms 11ms 81.7MB 773ms 13ms crystal 1.14.0

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 1.cr 160ms 0.7ms 22.4MB 140ms 3ms crystal 1.14.0
typescript 1.ts 164ms 4.5ms 101.0MB 163ms 37ms deno 2.0.6

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 2.cr 342ms 2.6ms 3.4MB 327ms 0ms crystal 1.14.0
crystal 1.cr 344ms 2.9ms 3.4MB 333ms 0ms crystal 1.14.0
typescript 6.ts 464ms 2.6ms 58.5MB 443ms 10ms deno 2.0.6

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 1.cr 38ms 0.2ms 3.4MB 27ms 0ms crystal 1.14.0
crystal 2.cr 39ms 0.3ms 3.4MB 30ms 0ms crystal 1.14.0
typescript 6.ts 105ms 23ms 57.3MB 87ms 10ms deno 2.0.6

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 1.cr 2001ms 13ms 6.4MB 1953ms 30ms crystal 1.14.0
typescript 3.ts timeout 0.0ms 98.6MB 4977ms 33ms deno 2.0.6

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 1.cr 451ms 17ms 5.2MB 433ms 0ms crystal 1.14.0
typescript 3.ts 1297ms 7.1ms 78.0MB 1243ms 73ms deno 2.0.6

secp256k1

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 1.ts 1910ms 15ms 60.9MB 1917ms 10ms deno 2.0.6

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 1.ts 511ms 3.4ms 59.3MB 507ms 13ms deno 2.0.6

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 1.cr 3898ms 25ms 4.6MB 3887ms 0ms crystal 1.14.0
typescript 7.ts 4028ms 5.0ms 58.9MB 4007ms 13ms deno 2.0.6

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 1.cr 981ms 2.7ms 4.5MB 967ms 0ms crystal 1.14.0
typescript 7.ts 1036ms 5.7ms 59.0MB 1020ms 7ms deno 2.0.6

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
crystal 1.cr 251ms 3.2ms 4.0MB 240ms 0ms crystal 1.14.0
typescript 7.ts 284ms 2.6ms 56.2MB 267ms 7ms deno 2.0.6