Typescript VS Go benchmarks

Current benchmark data was generated on Wed May 25 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
go 1.go 3203ms 14ms 45.3MB 4650ms 50ms go 1.18.2
typescript 1.ts 3471ms 34ms 169.4MB 3520ms 673ms deno 1.22.0
go 1.go timeout 0.0ms 0.0MB 0ms 0ms tinygo 0.23.0

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 1.ts 146ms 9.8ms 55.4MB 130ms 17ms deno 1.22.0
go 1.go 267ms 12ms 8.2MB 310ms 3ms go 1.18.2
go 1.go 418ms 1.6ms 6.6MB 410ms 0ms tinygo 0.23.0

coro-prime-sieve

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1-m.go 906ms 100ms 15.3MB 1760ms 0ms go 1.18.2
go 1.go 1828ms 5.3ms 253.7MB 1727ms 87ms tinygo 0.23.0
typescript 1.ts 2061ms 138ms 68.2MB 2067ms 40ms deno 1.22.0

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1-m.go 69ms 9.2ms 5.4MB 113ms 0ms go 1.18.2
typescript 1.ts 166ms 9.6ms 45.0MB 153ms 10ms deno 1.22.0
go 1.go 266ms 2.8ms 68.7MB 227ms 20ms tinygo 0.23.0

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 3-m.go 209ms 1.8ms 2.9MB 370ms 0ms go 1.18.2
typescript 1.ts 4617ms 35ms 54.2MB 4440ms 173ms deno 1.22.0

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 3.go 27ms 0.6ms 2.9MB 33ms 0ms go 1.18.2
typescript 1.ts 464ms 26ms 44.9MB 427ms 27ms deno 1.22.0

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 1.1ms 0.5ms 0.0MB 0ms 0ms tinygo 0.23.0
go 1.go 3.0ms 0.5ms 2.8MB 0ms 0ms go 1.18.2
typescript 1.ts 20ms 0.6ms 32.2MB 8ms 3ms deno 1.22.0

http-server

Input: 3000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1-http2.go 198ms 6.8ms 60.4MB 297ms 47ms go 1.18.2
go 2-m.go 716ms 81ms 175.4MB 700ms 487ms go 1.18.2
go 1-m.go 720ms 67ms 182.0MB 697ms 463ms go 1.18.2
typescript 2.ts 1155ms 13ms 133.5MB 1337ms 310ms deno 1.22.0
typescript 1.ts 1203ms 23ms 133.7MB 1400ms 317ms deno 1.22.0
typescript 2-tls.ts 1488ms 140ms 160.9MB 1613ms 390ms deno 1.22.0
typescript 1-http2.ts 1560ms 35ms 138.5MB 1663ms 377ms deno 1.22.0

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1-http2.go 47ms 5.2ms 24.1MB 43ms 13ms go 1.18.2
go 2.go 132ms 20ms 39.0MB 80ms 73ms go 1.18.2
go 1.go 149ms 24ms 38.3MB 87ms 77ms go 1.18.2
typescript 1.ts 266ms 16ms 69.6MB 203ms 63ms deno 1.22.0
typescript 2.ts 267ms 10ms 71.5MB 210ms 67ms deno 1.22.0
typescript 2-tls.ts 332ms 6.5ms 74.8MB 270ms 70ms deno 1.22.0
typescript 1-http2.ts 334ms 24ms 67.7MB 260ms 73ms deno 1.22.0

json-serde

Input: sample 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 2-ffi.go 90ms 1.2ms 44.8MB 70ms 17ms go 1.18.2
typescript 1-m.ts 167ms 0.8ms 65.3MB 263ms 7ms deno 1.22.0
go 1.go 178ms 0.5ms 20.6MB 173ms 0ms go 1.18.2

Input: canada 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 2-ffi.go 413ms 2.5ms 183.4MB 413ms 70ms go 1.18.2
go 1.go 1010ms 46ms 111.0MB 997ms 33ms go 1.18.2
typescript 1.ts 1213ms 67ms 264.9MB 1400ms 127ms deno 1.22.0

lru

Input: 1000 1000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 3.go 168ms 2.8ms 2.9MB 160ms 0ms go 1.18.2
go 3.go 173ms 0.5ms 0.3MB 160ms 0ms tinygo 0.23.0
typescript 2.ts 758ms 0.5ms 44.4MB 747ms 7ms deno 1.22.0
typescript 1.ts 1088ms 0.2ms 43.7MB 1073ms 7ms deno 1.22.0

Input: 1000 3000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 3.go 490ms 1.6ms 2.9MB 477ms 0ms go 1.18.2
go 3.go 512ms 0.2ms 2.3MB 500ms 0ms tinygo 0.23.0
typescript 2.ts 2140ms 101ms 51.9MB 2137ms 7ms deno 1.22.0
typescript 1.ts 2827ms 5.7ms 51.8MB 2803ms 17ms deno 1.22.0

Input: 100 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 3.go 85ms 0.3ms 0.0MB 77ms 0ms tinygo 0.23.0
go 3.go 88ms 0.8ms 4.1MB 80ms 0ms go 1.18.2
typescript 2.ts 361ms 21ms 38.0MB 343ms 7ms deno 1.22.0
typescript 1.ts 411ms 4.9ms 37.3MB 397ms 0ms deno 1.22.0

merkletrees

Input: 17

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 1.ts 758ms 42ms 91.1MB 757ms 40ms deno 1.22.0
go 1.go 2139ms 35ms 38.9MB 3060ms 33ms go 1.18.2
go 2.go 2329ms 6.4ms 42.1MB 3320ms 63ms go 1.18.2
go 1.go 4944ms 13ms 212.8MB 4870ms 57ms tinygo 0.23.0
go 2.go timeout 0.0ms 0.0MB 0ms 0ms tinygo 0.23.0

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 1.ts 193ms 11ms 57.4MB 187ms 17ms deno 1.22.0
go 1.go 443ms 6.3ms 12.3MB 610ms 10ms go 1.18.2
go 2.go 516ms 13ms 13.4MB 713ms 20ms go 1.18.2
go 1.go 1016ms 1.9ms 39.1MB 993ms 7ms tinygo 0.23.0
go 2.go 1278ms 2.3ms 51.9MB 1257ms 7ms tinygo 0.23.0

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 443ms 3.4ms 4.8MB 430ms 0ms go 1.18.2
go 1.go 705ms 0.5ms 0.0MB 697ms 0ms tinygo 0.23.0
typescript 6.ts 738ms 49ms 39.4MB 720ms 3ms deno 1.22.0

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 54ms 2.0ms 2.8MB 43ms 0ms go 1.18.2
go 1.go 74ms 1.3ms 0.0MB 60ms 0ms tinygo 0.23.0
typescript 6.ts 99ms 2.7ms 37.4MB 83ms 3ms deno 1.22.0

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 8.go 1276ms 0.8ms 8.5MB 1253ms 7ms go 1.18.2
typescript 3.ts timeout 0.0ms 0.0MB 0ms 0ms deno 1.22.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 8.go 309ms 2.7ms 8.5MB 290ms 3ms go 1.18.2
typescript 3.ts 1266ms 14ms 53.3MB 1253ms 47ms deno 1.22.0

secp256k1

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 0-ffi.go 151ms 0.9ms 9.4MB 137ms 0ms go 1.18.2
typescript 1.ts 3132ms 218ms 37.8MB 3167ms 20ms deno 1.22.0

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 0-ffi.go 51ms 0.8ms 11.5MB 33ms 0ms go 1.18.2
typescript 1.ts 852ms 56ms 37.7MB 863ms 13ms deno 1.22.0

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 4-m.go 2219ms 4.5ms 5.3MB 4303ms 3ms go 1.18.2
typescript 7.ts 4312ms 317ms 36.7MB 4290ms 3ms deno 1.22.0
go 1.go 4402ms 2.2ms 5.3MB 4397ms 0ms go 1.18.2
go 1.go timeout 0.0ms 0.0MB 0ms 0ms tinygo 0.23.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 4-m.go 568ms 0.8ms 3.3MB 1077ms 0ms go 1.18.2
go 1.go 1113ms 2.6ms 3.3MB 1097ms 3ms go 1.18.2
typescript 7.ts 1152ms 59ms 34.9MB 1133ms 7ms deno 1.22.0
go 1.go timeout 0.0ms 0.0MB 0ms 0ms tinygo 0.23.0

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 4-m.go 151ms 1.3ms 2.8MB 267ms 0ms go 1.18.2
go 1.go 284ms 0.9ms 2.8MB 270ms 0ms go 1.18.2
typescript 7.ts 309ms 21ms 32.8MB 297ms 0ms deno 1.22.0
go 1.go 1604ms 0.3ms 0.0MB 1590ms 0ms tinygo 0.23.0