Typescript VS Ruby benchmarks

Current benchmark data was generated on Mon Feb 06 2023, full log can be found HERE

CONTRIBUTIONS are WELCOME!

[x86_64][2 cores] Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz (Model 85)

* -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
typescript 1.ts 4002ms 113ms 127.2MB 4077ms 633ms deno 1.30.2
ruby 1.rb timeout 0.0ms 72.6MB 4943ms 40ms ruby 3.2.0
ruby 1.rb timeout 0.0ms 100.2MB 4937ms 43ms ruby/yjit 3.2.0
ruby 1.rb timeout 0.0ms 499.1MB 8423ms 310ms truffleruby 22.3.1

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 1.ts 196ms 4.2ms 56.7MB 223ms 13ms deno 1.30.2
ruby 1.rb 600ms 3.1ms 40.7MB 567ms 17ms ruby/yjit 3.2.0
ruby 1.rb 1122ms 5.1ms 40.2MB 1097ms 13ms ruby 3.2.0
ruby 1-m.rb 1195ms 48ms 434.8MB 1953ms 170ms truffleruby 22.3.1

coro-prime-sieve

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 1.ts 2022ms 10ms 70.1MB 2033ms 33ms deno 1.30.2
ruby 1.rb 4122ms 30ms 82.7MB 4040ms 63ms ruby/yjit 3.2.0
ruby 1.rb timeout 0.0ms 77.8MB 4917ms 63ms ruby 3.2.0
ruby 1.rb timeout 0.0ms 1107.6MB 4193ms 1413ms truffleruby 22.3.1

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 1.ts 168ms 1.0ms 45.3MB 157ms 3ms deno 1.30.2
ruby 1.rb 266ms 2.2ms 45.1MB 227ms 23ms ruby/yjit 3.2.0
ruby 1.rb 304ms 3.5ms 44.3MB 257ms 30ms ruby 3.2.0
ruby 1.rb timeout 0.0ms 1091.8MB 4383ms 1290ms truffleruby 22.3.1

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 1.ts 2140ms 80ms 38.4MB 2007ms 113ms deno 1.30.2
ruby 6.rb 2378ms 0.7ms 43.6MB 2337ms 27ms ruby/yjit 3.2.0
ruby 6-m.rb 2793ms 58ms 383.3MB 4990ms 307ms truffleruby 22.3.1
ruby 6.rb 4253ms 47ms 43.1MB 4210ms 27ms ruby 3.2.0

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 1.ts 272ms 14ms 38.7MB 220ms 17ms deno 1.30.2
ruby 6.rb 312ms 1.0ms 35.0MB 277ms 17ms ruby/yjit 3.2.0
ruby 6.rb 502ms 6.0ms 34.4MB 473ms 13ms ruby 3.2.0
ruby 6-m.rb 905ms 19ms 321.2MB 1523ms 133ms truffleruby 22.3.1

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 1.ts 25ms 0.6ms 32.7MB 10ms 0ms deno 1.30.2
ruby 1.rb 52ms 3.6ms 165.0MB 28ms 30ms truffleruby 22.3.1
ruby 1.rb 77ms 1.6ms 32.3MB 52ms 10ms ruby/yjit 3.2.0
ruby 1.rb 81ms 1.0ms 32.2MB 54ms 16ms ruby 3.2.0

http-server

Input: 3000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 2.ts 1098ms 45ms 136.4MB 1177ms 377ms deno 1.30.2
typescript 1.ts 1129ms 7.6ms 135.3MB 1173ms 393ms deno 1.30.2
typescript 2-tls.ts 1318ms 16ms 147.1MB 1390ms 370ms deno 1.30.2
typescript 1-http2.ts 1446ms 35ms 138.2MB 1570ms 400ms deno 1.30.2

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 1.ts 237ms 12ms 75.2MB 160ms 67ms deno 1.30.2
typescript 2.ts 240ms 3.3ms 71.9MB 167ms 53ms deno 1.30.2
typescript 1-http2.ts 283ms 8.0ms 63.8MB 210ms 60ms deno 1.30.2
typescript 2-tls.ts 394ms 10ms 77.0MB 297ms 80ms deno 1.30.2

json-serde

Input: sample 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 1.ts 391ms 5.6ms 89.7MB 380ms 40ms deno 1.30.2
ruby 1.rb 462ms 4.3ms 54.5MB 423ms 20ms ruby/yjit 3.2.0
ruby 1.rb 472ms 2.2ms 51.8MB 430ms 23ms ruby 3.2.0
ruby 1.rb timeout 0.0ms 460.8MB 9140ms 237ms truffleruby 22.3.1

Input: canada 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 1.ts 3684ms 93ms 384.6MB 3757ms 173ms deno 1.30.2
ruby 1.rb 4072ms 8.8ms 175.6MB 3980ms 70ms ruby/yjit 3.2.0
ruby 1.rb 4077ms 0.4ms 174.4MB 3957ms 103ms ruby 3.2.0
ruby 1.rb timeout 0.0ms 414.1MB 9210ms 220ms truffleruby 22.3.1

lru

Input: 1000 1000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 2.ts 380ms 1.8ms 43.6MB 377ms 3ms deno 1.30.2
ruby 1.rb 467ms 3.7ms 33.0MB 430ms 23ms ruby/yjit 3.2.0
ruby 1.rb 670ms 10ms 32.4MB 637ms 13ms ruby 3.2.0
typescript 1.ts 705ms 0.8ms 44.0MB 693ms 7ms deno 1.30.2
ruby 1-m.rb 892ms 15ms 329.9MB 1300ms 120ms truffleruby 22.3.1

Input: 1000 3000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 2.ts 1057ms 4.3ms 45.6MB 1047ms 7ms deno 1.30.2
ruby 1.rb 1239ms 3.7ms 32.9MB 1210ms 13ms ruby/yjit 3.2.0
ruby 1.rb 1672ms 87ms 359.1MB 2143ms 143ms truffleruby 22.3.1
ruby 1.rb 1812ms 11ms 32.4MB 1783ms 13ms ruby 3.2.0
typescript 1.ts 2045ms 2.9ms 45.0MB 2033ms 3ms deno 1.30.2

Input: 100 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 2.ts 198ms 5.8ms 40.5MB 180ms 10ms deno 1.30.2
typescript 1.ts 224ms 2.5ms 38.2MB 213ms 7ms deno 1.30.2
ruby 1.rb 270ms 0.7ms 32.9MB 240ms 13ms ruby/yjit 3.2.0
ruby 1.rb 371ms 2.0ms 32.3MB 340ms 17ms ruby 3.2.0
ruby 1-m.rb 639ms 18ms 319.0MB 957ms 107ms truffleruby 22.3.1

merkletrees

Input: 17

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 1.ts 728ms 1.1ms 89.4MB 737ms 30ms deno 1.30.2
ruby 1.rb timeout 0.0ms 96.5MB 4927ms 57ms ruby 3.2.0
ruby 1.rb timeout 0.0ms 97.1MB 4927ms 53ms ruby/yjit 3.2.0
ruby 1.rb timeout 0.0ms 515.5MB 9077ms 260ms truffleruby 22.3.1

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 1.ts 187ms 1.6ms 57.3MB 187ms 13ms deno 1.30.2
ruby 1.rb 3322ms 2877ms 52.8MB 4930ms 40ms ruby 3.2.0
ruby 1-m.rb 3712ms 39ms 590.9MB 6777ms 257ms truffleruby 22.3.1
ruby 1.rb 4121ms 6.3ms 53.6MB 4070ms 30ms ruby/yjit 3.2.0

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 6.ts 751ms 8.4ms 37.1MB 737ms 0ms deno 1.30.2
ruby 2.rb 1216ms 34ms 313.2MB 1420ms 117ms truffleruby 22.3.1
ruby 2.rb timeout 0.0ms 32.1MB 4970ms 13ms ruby 3.2.0
ruby 2.rb timeout 0.0ms 33.0MB 4967ms 17ms ruby/yjit 3.2.0

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 6.ts 107ms 4.2ms 37.2MB 97ms 0ms deno 1.30.2
ruby 2-m.rb 452ms 38ms 311.2MB 690ms 93ms truffleruby 22.3.1
ruby 2.rb 2122ms 1.9ms 32.9MB 2093ms 13ms ruby/yjit 3.2.0
ruby 2.rb 3393ms 17ms 32.2MB 3363ms 17ms ruby 3.2.0

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ruby 1.rb timeout 0.0ms 157.8MB 4917ms 67ms ruby 3.2.0
ruby 1.rb timeout 0.0ms 158.5MB 4903ms 77ms ruby/yjit 3.2.0
ruby 1.rb timeout 0.0ms 431.5MB 9403ms 223ms truffleruby 22.3.1
typescript 3.ts timeout 0.0ms 79.1MB 4950ms 37ms deno 1.30.2

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 3.ts 1466ms 19ms 57.6MB 1403ms 73ms deno 1.30.2
ruby 1-m.rb 2269ms 60ms 418.2MB 4133ms 190ms truffleruby 22.3.1
ruby 1.rb 3194ms 6.2ms 158.6MB 3097ms 77ms ruby/yjit 3.2.0
ruby 1.rb 3219ms 10ms 157.8MB 3123ms 77ms ruby 3.2.0

secp256k1

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 1.ts 3043ms 18ms 37.7MB 3040ms 7ms deno 1.30.2

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 1.ts 791ms 9.2ms 38.0MB 797ms 7ms deno 1.30.2

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ruby 4.rb timeout 0.0ms 32.1MB 4970ms 13ms ruby 3.2.0
ruby 4.rb timeout 0.0ms 32.8MB 4963ms 13ms ruby/yjit 3.2.0
ruby 4.rb timeout 0.0ms 389.6MB 5257ms 167ms truffleruby 22.3.1
typescript 7.ts timeout 0.0ms 39.1MB 4987ms 3ms deno 1.30.2

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 7.ts 1361ms 17ms 37.9MB 1340ms 7ms deno 1.30.2
ruby 4.rb timeout 0.0ms 32.2MB 4973ms 7ms ruby 3.2.0
ruby 4.rb timeout 0.0ms 32.8MB 4967ms 17ms ruby/yjit 3.2.0
ruby 4.rb timeout 0.0ms 457.7MB 5487ms 180ms truffleruby 22.3.1

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 7.ts 423ms 66ms 38.3MB 353ms 13ms deno 1.30.2
ruby 4.rb 2875ms 14ms 407.1MB 3453ms 140ms truffleruby 22.3.1
ruby 4.rb timeout 0.0ms 32.4MB 4970ms 10ms ruby 3.2.0
ruby 4.rb timeout 0.0ms 32.8MB 4970ms 10ms ruby/yjit 3.2.0