Typescript VS Ruby benchmarks

Current benchmark data was generated on Fri Sep 30 2022, 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 3971ms 6.6ms 200.5MB 3913ms 723ms deno 1.26.0
ruby 1.rb timeout 0.0ms 0.0MB 0ms 0ms ruby 3.1.2
ruby 1.rb timeout 0.0ms 0.0MB 0ms 0ms ruby/yjit 3.1.2
ruby 1.rb timeout 0.0ms 0.0MB 0ms 0ms truffleruby 22.2.0

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 1.ts 158ms 15ms 52.9MB 150ms 13ms deno 1.26.0
ruby 1.rb 1035ms 3.3ms 292.0MB 857ms 163ms ruby/yjit 3.1.2
ruby 1.rb 1079ms 3.4ms 35.5MB 1033ms 27ms ruby 3.1.2
ruby 1-m.rb 1143ms 28ms 386.2MB 1847ms 157ms truffleruby 22.2.0

coro-prime-sieve

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 1.ts 2072ms 3.7ms 68.9MB 2097ms 33ms deno 1.26.0
ruby 1.rb 3425ms 53ms 336.7MB 3213ms 193ms ruby/yjit 3.1.2
ruby 1.rb 4508ms 91ms 80.1MB 4427ms 60ms ruby 3.1.2
ruby 1.rb timeout 0.0ms 0.0MB 0ms 0ms truffleruby 22.2.0

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 1.ts 176ms 1.7ms 42.3MB 163ms 7ms deno 1.26.0
ruby 1.rb 290ms 3.0ms 42.2MB 250ms 20ms ruby 3.1.2
ruby 1.rb 428ms 4.6ms 298.7MB 273ms 137ms ruby/yjit 3.1.2
ruby 1.rb timeout 0.0ms 0.0MB 0ms 0ms truffleruby 22.2.0

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 1.ts 2199ms 42ms 39.2MB 2057ms 127ms deno 1.26.0
ruby 6.rb 2890ms 6.9ms 295.3MB 2730ms 143ms ruby/yjit 3.1.2
ruby 6.rb 4559ms 42ms 39.4MB 4527ms 13ms ruby 3.1.2
ruby 6.rb timeout 0.0ms 0.0MB 0ms 0ms truffleruby 22.2.0

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 1.ts 289ms 59ms 39.0MB 257ms 10ms deno 1.26.0
ruby 6.rb 517ms 5.9ms 31.1MB 490ms 13ms ruby 3.1.2
ruby 6.rb 530ms 2.3ms 287.7MB 373ms 137ms ruby/yjit 3.1.2
ruby 6-m.rb 1710ms 5.1ms 368.7MB 3030ms 150ms truffleruby 22.2.0

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 1.ts 30ms 2.3ms 32.6MB 18ms 0ms deno 1.26.0
ruby 1.rb 48ms 0.8ms 145.7MB 22ms 24ms truffleruby 22.2.0
ruby 1.rb 73ms 0.7ms 30.0MB 50ms 10ms ruby 3.1.2
ruby 1.rb 259ms 0.7ms 286.6MB 106ms 136ms ruby/yjit 3.1.2

http-server

Input: 3000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 1.ts 1217ms 43ms 136.7MB 1400ms 363ms deno 1.26.0
typescript 2.ts 1218ms 36ms 139.0MB 1423ms 353ms deno 1.26.0
typescript 1-http2.ts 1557ms 78ms 142.7MB 1750ms 400ms deno 1.26.0
typescript 2-tls.ts timeout 0.0ms 0.0MB 0ms 0ms deno 1.26.0

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 2.ts 255ms 15ms 73.7MB 193ms 70ms deno 1.26.0
typescript 1.ts 263ms 6.7ms 77.8MB 193ms 70ms deno 1.26.0
typescript 1-http2.ts 286ms 7.6ms 77.0MB 237ms 63ms deno 1.26.0
typescript 2-tls.ts 412ms 11ms 84.0MB 350ms 67ms deno 1.26.0

json-serde

Input: sample 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 1.ts 183ms 28ms 67.6MB 137ms 23ms deno 1.26.0
ruby 1.rb 448ms 12ms 48.7MB 413ms 10ms ruby 3.1.2
ruby 1.rb 627ms 2.2ms 305.0MB 440ms 167ms ruby/yjit 3.1.2
ruby 1.rb timeout 0.0ms 0.0MB 0ms 0ms truffleruby 22.2.0

Input: canada 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 1.ts 1248ms 4.5ms 263.5MB 1363ms 97ms deno 1.26.0
ruby 1.rb 3913ms 2.7ms 162.4MB 3813ms 83ms ruby 3.1.2
ruby 1.rb 4091ms 3.2ms 419.6MB 3837ms 237ms ruby/yjit 3.1.2
ruby 1.rb timeout 0.0ms 0.0MB 0ms 0ms truffleruby 22.2.0

lru

Input: 1000 1000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ruby 1.rb 660ms 1.2ms 286.7MB 510ms 133ms ruby/yjit 3.1.2
typescript 2.ts 672ms 5.4ms 45.0MB 663ms 7ms deno 1.26.0
ruby 1.rb 676ms 6.3ms 30.1MB 653ms 3ms ruby 3.1.2
ruby 1-m.rb 937ms 23ms 313.9MB 1377ms 110ms truffleruby 22.2.0
typescript 1.ts 994ms 2.6ms 44.9MB 983ms 3ms deno 1.26.0

Input: 1000 3000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ruby 1.rb 1460ms 4.2ms 286.7MB 1310ms 130ms ruby/yjit 3.1.2
ruby 1.rb 1804ms 16ms 343.9MB 2420ms 137ms truffleruby 22.2.0
ruby 1.rb 1879ms 3.5ms 30.2MB 1850ms 13ms ruby 3.1.2
typescript 2.ts 1904ms 1.7ms 53.2MB 1883ms 20ms deno 1.26.0
typescript 1.ts 2934ms 9.8ms 52.2MB 2893ms 13ms deno 1.26.0

Input: 100 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 2.ts 342ms 0.9ms 39.0MB 330ms 10ms deno 1.26.0
typescript 1.ts 368ms 1.6ms 38.7MB 353ms 3ms deno 1.26.0
ruby 1.rb 373ms 2.8ms 29.8MB 353ms 7ms ruby 3.1.2
ruby 1.rb 459ms 1.0ms 286.7MB 297ms 143ms ruby/yjit 3.1.2
ruby 1-m.rb 646ms 3.5ms 299.9MB 960ms 113ms truffleruby 22.2.0

merkletrees

Input: 17

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 1.ts 744ms 8.4ms 91.8MB 763ms 30ms deno 1.26.0
ruby 1.rb timeout 0.0ms 0.0MB 0ms 0ms ruby 3.1.2
ruby 1.rb timeout 0.0ms 0.0MB 0ms 0ms ruby/yjit 3.1.2
ruby 1.rb timeout 0.0ms 0.0MB 0ms 0ms truffleruby 22.2.0

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 1.ts 192ms 3.1ms 59.4MB 190ms 17ms deno 1.26.0
ruby 1-m.rb 3686ms 45ms 554.1MB 6717ms 240ms truffleruby 22.2.0
ruby 1.rb 4073ms 11ms 300.7MB 3900ms 160ms ruby/yjit 3.1.2
ruby 1.rb 4835ms 18ms 44.4MB 4800ms 23ms ruby 3.1.2

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 6.ts 749ms 18ms 38.1MB 733ms 3ms deno 1.26.0
ruby 2.rb 1295ms 5.6ms 306.8MB 1593ms 117ms truffleruby 22.2.0
ruby 2.rb timeout 0.0ms 0.0MB 0ms 0ms ruby 3.1.2
ruby 2.rb timeout 0.0ms 0.0MB 0ms 0ms ruby/yjit 3.1.2

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 6.ts 111ms 1.6ms 37.8MB 103ms 3ms deno 1.26.0
ruby 2-m.rb 493ms 6.7ms 304.9MB 767ms 113ms truffleruby 22.2.0
ruby 2.rb 2395ms 10ms 286.8MB 2240ms 133ms ruby/yjit 3.1.2
ruby 2.rb 3243ms 20ms 29.9MB 3217ms 13ms ruby 3.1.2

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ruby 1.rb timeout 0.0ms 0.0MB 0ms 0ms ruby 3.1.2
ruby 1.rb timeout 0.0ms 0.0MB 0ms 0ms ruby/yjit 3.1.2
ruby 1.rb timeout 0.0ms 0.0MB 0ms 0ms truffleruby 22.2.0
typescript 3.ts timeout 0.0ms 0.0MB 0ms 0ms deno 1.26.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 3.ts 1499ms 24ms 59.1MB 1463ms 50ms deno 1.26.0
ruby 1-m.rb 2343ms 8.7ms 410.5MB 4263ms 187ms truffleruby 22.2.0
ruby 1.rb 2950ms 4.1ms 162.2MB 2857ms 77ms ruby 3.1.2
ruby 1.rb 3100ms 8.3ms 420.7MB 2860ms 223ms ruby/yjit 3.1.2

secp256k1

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 1.ts 3209ms 21ms 40.8MB 3197ms 3ms deno 1.26.0

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 1.ts 841ms 3.5ms 39.0MB 837ms 13ms deno 1.26.0

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
ruby 4.rb timeout 0.0ms 0.0MB 0ms 0ms ruby 3.1.2
ruby 4.rb timeout 0.0ms 0.0MB 0ms 0ms ruby/yjit 3.1.2
ruby 4.rb timeout 0.0ms 0.0MB 0ms 0ms truffleruby 22.2.0
typescript 7.ts timeout 0.0ms 0.0MB 0ms 0ms deno 1.26.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 7.ts 1358ms 1.2ms 38.1MB 1343ms 7ms deno 1.26.0
ruby 4.rb timeout 0.0ms 0.0MB 0ms 0ms ruby 3.1.2
ruby 4.rb timeout 0.0ms 0.0MB 0ms 0ms ruby/yjit 3.1.2
ruby 4.rb timeout 0.0ms 0.0MB 0ms 0ms truffleruby 22.2.0

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 7.ts 372ms 2.0ms 37.9MB 353ms 7ms deno 1.26.0
ruby 4.rb 3041ms 38ms 368.9MB 3677ms 137ms truffleruby 22.2.0
ruby 4.rb timeout 0.0ms 0.0MB 0ms 0ms ruby 3.1.2
ruby 4.rb timeout 0.0ms 0.0MB 0ms 0ms ruby/yjit 3.1.2