Typescript VS Go benchmarks

Current benchmark data was generated on Tue Jul 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 1050ms 6.1ms 396.1MB 1003ms 197ms deno 2.3.7
go 1.go 1928ms 4.1ms 51.9MB 1907ms 7ms tinygo 0.38.0
go 1-m.go 2394ms 16ms 46.3MB 5317ms 47ms go 1.24.4

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 1.ts 131ms 1.6ms 80.0MB 133ms 27ms deno 2.3.7
go 1.go 150ms 1.6ms 5.0MB 140ms 0ms tinygo 0.38.0
go 1-m.go 209ms 0.3ms 8.0MB 367ms 13ms go 1.24.4

coro-prime-sieve

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1-m.go 515ms 53ms 15.5MB 2007ms 0ms go 1.24.4
typescript 1.ts 1246ms 2.1ms 122.0MB 1233ms 60ms deno 2.3.7
go 1.go timeout 0.0ms 13.1MB 2563ms 16923ms tinygo 0.38.0

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1-m.go 60ms 20ms 7.5MB 217ms 0ms go 1.24.4
typescript 1.ts 149ms 3.6ms 72.6MB 130ms 20ms deno 2.3.7
go 1-m.go 660ms 66ms 4.3MB 317ms 2160ms tinygo 0.38.0

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 3-m.go 126ms 0.7ms 5.5MB 377ms 0ms go 1.24.4
typescript 1.ts 2091ms 10ms 59.1MB 1960ms 133ms deno 2.3.7

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 3-m.go 17ms 0.4ms 7.5MB 30ms 0ms go 1.24.4
typescript 1.ts 243ms 5.9ms 59.3MB 223ms 27ms deno 2.3.7

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 0.7ms 0.0ms 0.3MB 0ms 0ms tinygo 0.38.0
go 1.go 1.5ms 0.0ms 3.4MB 0ms 0ms go 1.24.4
typescript 1.ts 29ms 0.9ms 45.7MB 10ms 10ms deno 2.3.7

http-server

Input: 3000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1-http2.go 123ms 1.9ms 56.3MB 350ms 80ms go 1.24.4
go 2-m.go 381ms 35ms 167.6MB 670ms 623ms go 1.24.4
go 1-m.go 397ms 21ms 166.2MB 737ms 610ms go 1.24.4
typescript 1-m.ts 676ms 13ms 241.3MB 623ms 420ms deno 2.3.7
typescript 2-m.ts 691ms 21ms 238.1MB 667ms 413ms deno 2.3.7
typescript 1-http2.ts 796ms 9.0ms 247.2MB 760ms 397ms deno 2.3.7
typescript 2-tls.ts 1359ms 15ms 264.6MB 1227ms 503ms deno 2.3.7

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1-http2.go 31ms 1.3ms 26.0MB 60ms 20ms go 1.24.4
go 1-m.go 73ms 5.1ms 38.9MB 103ms 93ms go 1.24.4
go 2-m.go 78ms 5.4ms 34.7MB 113ms 110ms go 1.24.4
typescript 1.ts 169ms 2.2ms 93.3MB 123ms 97ms deno 2.3.7
typescript 2.ts 171ms 2.5ms 93.0MB 127ms 93ms deno 2.3.7
typescript 1-http2.ts 204ms 3.6ms 95.1MB 160ms 83ms deno 2.3.7
typescript 2-tls.ts 342ms 9.5ms 101.7MB 273ms 113ms deno 2.3.7

json-serde

Input: sample 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 2-ffi.go 47ms 0.6ms 41.2MB 40ms 10ms go 1.24.4
go 1.go 140ms 1.7ms 18.6MB 133ms 0ms go 1.24.4
typescript 1.ts 181ms 8.9ms 93.8MB 170ms 37ms deno 2.3.7

Input: canada 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 2-ffi.go 246ms 7.1ms 145.2MB 240ms 37ms go 1.24.4
go 1.go 742ms 5.5ms 104.8MB 733ms 10ms go 1.24.4
typescript 1.ts 1214ms 40ms 415.7MB 1317ms 157ms deno 2.3.7

lru

Input: 1000 1000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 3.go 121ms 2.4ms 3.5MB 113ms 0ms go 1.24.4
go 3.go 134ms 1.8ms 0.4MB 127ms 0ms tinygo 0.38.0
typescript 2.ts 283ms 3.7ms 64.5MB 270ms 13ms deno 2.3.7
typescript 1.ts 592ms 1.3ms 63.5MB 573ms 13ms deno 2.3.7

Input: 1000 3000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 3.go 388ms 5.6ms 0.4MB 380ms 0ms tinygo 0.38.0
go 3.go 395ms 2.9ms 3.5MB 387ms 0ms go 1.24.4
typescript 2.ts 763ms 6.9ms 71.9MB 747ms 20ms deno 2.3.7
typescript 1.ts 1700ms 8.1ms 70.0MB 1683ms 13ms deno 2.3.7

Input: 100 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 3.go 50ms 1.2ms 3.5MB 43ms 0ms go 1.24.4
go 3.go 66ms 1.7ms 0.3MB 60ms 0ms tinygo 0.38.0
typescript 2.ts 147ms 2.9ms 60.0MB 133ms 10ms deno 2.3.7
typescript 1.ts 173ms 2.3ms 60.4MB 157ms 13ms deno 2.3.7

merkletrees

Input: 17

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 1.ts 596ms 5.1ms 228.6MB 610ms 110ms deno 2.3.7
go 1.go 1100ms 7.0ms 35.5MB 1080ms 7ms tinygo 0.38.0
go 2.go 1430ms 21ms 51.9MB 1407ms 7ms tinygo 0.38.0
go 1-m.go 1489ms 1.4ms 49.0MB 3160ms 40ms go 1.24.4
go 2-m.go 1716ms 9.3ms 43.0MB 3753ms 40ms go 1.24.4

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
typescript 1.ts 160ms 1.5ms 99.6MB 157ms 37ms deno 2.3.7
go 1.go 220ms 9.6ms 11.6MB 207ms 0ms tinygo 0.38.0
go 2.go 293ms 9.9ms 15.4MB 280ms 0ms tinygo 0.38.0
go 1-m.go 335ms 1.4ms 12.1MB 673ms 23ms go 1.24.4
go 2-m.go 376ms 1.7ms 13.9MB 793ms 20ms go 1.24.4

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 352ms 3.6ms 3.5MB 343ms 0ms go 1.24.4
go 1.go 352ms 7.5ms 0.3MB 343ms 0ms tinygo 0.38.0
typescript 6.ts 476ms 11ms 57.8MB 460ms 10ms deno 2.3.7

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 38ms 1.4ms 3.5MB 30ms 0ms go 1.24.4
go 1.go 39ms 1.1ms 0.3MB 30ms 0ms tinygo 0.38.0
typescript 6.ts 80ms 1.2ms 57.8MB 67ms 10ms deno 2.3.7

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 8.go 1207ms 7.6ms 8.6MB 1193ms 0ms go 1.24.4
typescript 3.ts timeout 0.0ms 132.4MB 4940ms 100ms deno 2.3.7

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 8.go 283ms 3.4ms 8.6MB 270ms 0ms go 1.24.4
typescript 3.ts 1156ms 5.1ms 79.0MB 1110ms 67ms deno 2.3.7

secp256k1

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 0-ffi.go 91ms 0.9ms 5.2MB 83ms 0ms go 1.24.4
typescript 1.ts 1972ms 38ms 61.3MB 1977ms 13ms deno 2.3.7

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 0-ffi.go 25ms 0.9ms 5.2MB 20ms 0ms go 1.24.4
typescript 1.ts 528ms 3.5ms 60.0MB 533ms 10ms deno 2.3.7

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 4-m.go 1900ms 1.2ms 5.5MB 7423ms 7ms go 1.24.4
go 1.go 3659ms 14ms 5.5MB 3650ms 3ms go 1.24.4
typescript 7.ts 4055ms 22ms 57.4MB 4037ms 10ms deno 2.3.7
go 1.go timeout 0.0ms 0.5MB 4990ms 0ms tinygo 0.38.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 4-m.go 480ms 0.2ms 5.6MB 1843ms 0ms go 1.24.4
go 1.go 921ms 7.0ms 3.5MB 913ms 0ms go 1.24.4
typescript 7.ts 1045ms 22ms 57.3MB 1033ms 10ms deno 2.3.7
go 1.go 1398ms 2.9ms 0.4MB 1390ms 0ms tinygo 0.38.0

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 4-m.go 125ms 1.2ms 5.5MB 450ms 0ms go 1.24.4
go 1.go 232ms 0.1ms 3.5MB 220ms 0ms go 1.24.4
typescript 7.ts 303ms 3.6ms 56.8MB 287ms 10ms deno 2.3.7
go 1.go 351ms 0.6ms 0.4MB 340ms 0ms tinygo 0.38.0