Typescript VS Go benchmarks

Current benchmark data was generated on Tue Apr 01 2025, 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
typescript 1.ts 1088ms 10ms 480.2MB 1010ms 223ms deno 2.2.6
go 1.go 1240ms 17ms 54.9MB 1220ms 10ms tinygo 0.37.0
go 1-m.go 2400ms 32ms 42.0MB 5317ms 40ms go 1.24.1

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 112ms 0.9ms 5.6MB 100ms 0ms tinygo 0.37.0
typescript 1.ts 135ms 8.7ms 76.9MB 133ms 27ms deno 2.2.6
go 1-m.go 212ms 1.0ms 8.2MB 377ms 10ms go 1.24.1

coro-prime-sieve

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1-m.go 560ms 31ms 15.5MB 2190ms 0ms go 1.24.1
go 1.go 752ms 8.4ms 268.3MB 693ms 43ms tinygo 0.37.0
typescript 1.ts 1168ms 1.9ms 120.6MB 1160ms 60ms deno 2.2.6

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1-m.go 46ms 14ms 7.4MB 157ms 0ms go 1.24.1
go 1.go 70ms 0.3ms 68.6MB 50ms 10ms tinygo 0.37.0
typescript 1.ts 147ms 2.8ms 70.7MB 127ms 23ms deno 2.2.6

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 3-m.go 126ms 0.9ms 5.5MB 377ms 0ms go 1.24.1
typescript 1.ts 2058ms 7.8ms 57.5MB 1927ms 137ms deno 2.2.6

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 3-m.go 17ms 0.8ms 7.4MB 33ms 0ms go 1.24.1
typescript 1.ts 243ms 1.2ms 57.6MB 220ms 27ms deno 2.2.6

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 0.9ms 0.1ms 0.4MB 0ms 0ms tinygo 0.37.0
go 1.go 1.5ms 0.1ms 3.4MB 0ms 0ms go 1.24.1
typescript 1.ts 26ms 0.6ms 44.5MB 10ms 6ms deno 2.2.6

http-server

Input: 3000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1-http2.go 123ms 3.0ms 55.9MB 340ms 83ms go 1.24.1
go 1-m.go 281ms 232ms 166.7MB 700ms 635ms go 1.24.1
go 2-m.go 420ms 15ms 170.6MB 657ms 683ms go 1.24.1
typescript 1-m.ts 656ms 3.7ms 249.1MB 597ms 437ms deno 2.2.6
typescript 2-m.ts 663ms 7.2ms 233.6MB 607ms 437ms deno 2.2.6
typescript 1-http2.ts 810ms 11ms 243.1MB 737ms 430ms deno 2.2.6
typescript 2-tls.ts 1413ms 16ms 254.0MB 1273ms 523ms deno 2.2.6

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1-http2.go 29ms 1.1ms 25.6MB 53ms 20ms go 1.24.1
go 1-m.go 64ms 13ms 36.5MB 90ms 93ms go 1.24.1
go 2-m.go 72ms 5.0ms 33.4MB 90ms 97ms go 1.24.1
typescript 1.ts 167ms 1.3ms 89.8MB 117ms 97ms deno 2.2.6
typescript 2.ts 169ms 1.0ms 91.3MB 123ms 97ms deno 2.2.6
typescript 1-http2.ts 209ms 3.9ms 93.3MB 157ms 100ms deno 2.2.6
typescript 2-tls.ts 351ms 18ms 97.0MB 280ms 120ms deno 2.2.6

json-serde

Input: sample 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 2-ffi.go 47ms 1.0ms 41.1MB 40ms 3ms go 1.24.1
go 1.go 143ms 5.9ms 18.7MB 137ms 0ms go 1.24.1
typescript 1.ts 162ms 1.1ms 92.1MB 157ms 33ms deno 2.2.6

Input: canada 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 2-ffi.go 250ms 4.9ms 162.8MB 240ms 40ms go 1.24.1
go 1.go 760ms 2.0ms 105.0MB 750ms 13ms go 1.24.1
typescript 1.ts 1194ms 5.4ms 415.5MB 1317ms 147ms deno 2.2.6

lru

Input: 1000 1000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 3.go 121ms 0.7ms 3.5MB 110ms 0ms go 1.24.1
go 3.go 133ms 2.7ms 0.5MB 127ms 0ms tinygo 0.37.0
typescript 2.ts 285ms 13ms 61.6MB 270ms 17ms deno 2.2.6
typescript 1.ts 582ms 4.0ms 59.7MB 567ms 10ms deno 2.2.6

Input: 1000 3000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 3.go 391ms 13ms 0.5MB 383ms 0ms tinygo 0.37.0
go 3.go 396ms 6.3ms 3.5MB 387ms 0ms go 1.24.1
typescript 2.ts 744ms 13ms 69.5MB 730ms 17ms deno 2.2.6
typescript 1.ts 1661ms 6.0ms 66.9MB 1637ms 20ms deno 2.2.6

Input: 100 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 3.go 51ms 0.5ms 3.5MB 40ms 0ms go 1.24.1
go 3.go 66ms 2.6ms 0.4MB 60ms 0ms tinygo 0.37.0
typescript 2.ts 142ms 3.0ms 56.8MB 127ms 13ms deno 2.2.6
typescript 1.ts 172ms 2.5ms 59.3MB 160ms 10ms deno 2.2.6

merkletrees

Input: 17

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 1.ts 562ms 2.9ms 226.1MB 567ms 110ms deno 2.2.6
go 1.go 830ms 47ms 63.1MB 810ms 7ms tinygo 0.37.0
go 2.go 1142ms 24ms 55.0MB 1123ms 7ms tinygo 0.37.0
go 1-m.go 1484ms 11ms 49.2MB 3163ms 40ms go 1.24.1
go 2-m.go 1707ms 26ms 42.9MB 3750ms 37ms go 1.24.1

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 1.ts 154ms 0.8ms 98.0MB 147ms 37ms deno 2.2.6
go 1.go 179ms 3.9ms 9.8MB 163ms 0ms tinygo 0.37.0
go 2.go 217ms 6.8ms 17.1MB 203ms 3ms tinygo 0.37.0
go 1-m.go 334ms 0.8ms 12.2MB 673ms 23ms go 1.24.1
go 2-m.go 381ms 5.1ms 14.1MB 803ms 30ms go 1.24.1

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 347ms 1.9ms 0.4MB 340ms 0ms tinygo 0.37.0
go 1.go 352ms 2.3ms 3.5MB 340ms 0ms go 1.24.1
typescript 6.ts 463ms 3.5ms 56.1MB 447ms 10ms deno 2.2.6

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 38ms 0.1ms 0.4MB 30ms 0ms tinygo 0.37.0
go 1.go 39ms 0.7ms 3.5MB 30ms 0ms go 1.24.1
typescript 6.ts 78ms 0.4ms 54.6MB 60ms 10ms deno 2.2.6

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 8.go 1188ms 11ms 8.7MB 1177ms 0ms go 1.24.1
typescript 3.ts timeout 0.0ms 132.4MB 4970ms 57ms deno 2.2.6

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 8.go 284ms 2.5ms 8.6MB 270ms 0ms go 1.24.1
typescript 3.ts 1247ms 11ms 77.1MB 1187ms 77ms deno 2.2.6

secp256k1

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 0-ffi.go 91ms 0.3ms 5.2MB 80ms 0ms go 1.24.1
typescript 1.ts 1925ms 0.7ms 57.6MB 1933ms 13ms deno 2.2.6

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 0-ffi.go 27ms 0.7ms 5.2MB 20ms 0ms go 1.24.1
typescript 1.ts 526ms 1.2ms 56.5MB 527ms 13ms deno 2.2.6

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 4-m.go 1910ms 19ms 5.5MB 7410ms 3ms go 1.24.1
go 1.go 3664ms 9.1ms 5.6MB 3657ms 0ms go 1.24.1
typescript 7.ts 4050ms 12ms 56.5MB 4033ms 10ms deno 2.2.6
go 1.go timeout 0.0ms 0.5MB 4990ms 0ms tinygo 0.37.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 4-m.go 491ms 16ms 5.5MB 1820ms 0ms go 1.24.1
go 1.go 918ms 2.8ms 3.5MB 910ms 0ms go 1.24.1
typescript 7.ts 1038ms 1.2ms 55.9MB 1020ms 7ms deno 2.2.6
go 1.go 1397ms 0.8ms 0.5MB 1390ms 0ms tinygo 0.37.0

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 4-m.go 126ms 0.8ms 5.5MB 453ms 0ms go 1.24.1
go 1.go 234ms 0.7ms 3.5MB 227ms 0ms go 1.24.1
typescript 7.ts 289ms 4.8ms 53.2MB 270ms 10ms deno 2.2.6
go 1.go 352ms 0.6ms 0.4MB 340ms 0ms tinygo 0.37.0