Go VS Javascript benchmarks

Current benchmark data was generated on Tue Mar 25 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
javascript 1-m.js 977ms 25ms 178.7MB 1493ms 240ms bun 1.2.6
go 1.go 1269ms 2.1ms 54.9MB 1247ms 7ms tinygo 0.37.0
javascript 1-m.js 1281ms 9.6ms 272.7MB 2213ms 177ms node 23.10.0
go 1-m.go 2414ms 64ms 46.3MB 5500ms 40ms go 1.24.1

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 104ms 4.1ms 79.9MB 83ms 27ms bun 1.2.6
go 1.go 117ms 2.2ms 5.6MB 107ms 0ms tinygo 0.37.0
javascript 1.js 129ms 2.8ms 78.7MB 133ms 20ms node 23.10.0
go 1-m.go 211ms 1.3ms 7.9MB 373ms 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 457ms 43ms 14.8MB 1773ms 0ms go 1.24.1
go 1.go 741ms 2.7ms 269.0MB 683ms 43ms tinygo 0.37.0
javascript 1.js 1632ms 8.2ms 90.4MB 1723ms 60ms node 23.10.0
javascript 1.js 2522ms 17ms 103.0MB 2550ms 60ms bun 1.2.6

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1-m.go 42ms 3.4ms 7.5MB 137ms 0ms go 1.24.1
go 1.go 73ms 2.2ms 68.8MB 50ms 10ms tinygo 0.37.0
javascript 1.js 162ms 1.1ms 72.0MB 147ms 23ms node 23.10.0
javascript 1.js 198ms 4.2ms 87.2MB 220ms 27ms bun 1.2.6

edigits

Input: 250001

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 120ms 0.5ms 10.3MB 110ms 0ms go 1.24.1
javascript 1.js 274ms 1.8ms 62.8MB 290ms 23ms node 23.10.0
javascript 1.js 530ms 5.1ms 77.9MB 497ms 27ms bun 1.2.6

Input: 100000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 34ms 0.7ms 8.2MB 30ms 0ms go 1.24.1
javascript 1.js 129ms 1.3ms 62.0MB 150ms 20ms node 23.10.0
javascript 1.js 503ms 3.1ms 67.9MB 473ms 20ms bun 1.2.6

fannkuch-redux

Input: 11

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 3-m.go 688ms 26ms 3.5MB 2590ms 0ms go 1.24.1
go 3.go 2017ms 0.3ms 48.6MB 1997ms 7ms tinygo 0.37.0

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 3-m.go 74ms 0.4ms 5.6MB 197ms 0ms go 1.24.1
go 3.go 194ms 0.5ms 49.0MB 173ms 3ms tinygo 0.37.0

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 3-m.go 127ms 1.0ms 7.5MB 377ms 3ms go 1.24.1

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 3-m.go 17ms 0.2ms 7.5MB 33ms 0ms go 1.24.1

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.3ms 0.7ms 3.4MB 0ms 0ms go 1.24.1
javascript 1.js 13ms 0.4ms 32.9MB 0ms 0ms bun 1.2.6
javascript 1.js 32ms 0.2ms 48.1MB 18ms 4ms node 23.10.0

http-server

Input: 3000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1-http2.go 123ms 7.0ms 56.3MB 340ms 93ms go 1.24.1
javascript 1-m.bun.js 345ms 15ms 75.8MB 163ms 430ms bun 1.2.6
go 1-m.go 427ms 28ms 170.8MB 743ms 673ms go 1.24.1
go 2-m.go 435ms 0.9ms 168.4MB 703ms 713ms go 1.24.1
javascript 1.js 3563ms 116ms 194.0MB 3377ms 1677ms node 23.10.0

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1-http2.go 30ms 1.4ms 25.6MB 53ms 20ms go 1.24.1
go 1-m.go 76ms 6.3ms 36.7MB 100ms 110ms go 1.24.1
go 2-m.go 77ms 12ms 33.7MB 93ms 120ms go 1.24.1
javascript 1.bun.js 120ms 14ms 55.4MB 37ms 100ms bun 1.2.6
javascript 1.js 372ms 3.7ms 80.4MB 350ms 130ms node 23.10.0

json-serde

Input: canada 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 2-ffi.go 255ms 13ms 151.3MB 243ms 50ms go 1.24.1
javascript 1.js 420ms 4.8ms 268.4MB 340ms 120ms bun 1.2.6
javascript 1.js 695ms 5.1ms 199.1MB 807ms 83ms node 23.10.0
go 1.go 760ms 6.5ms 107.0MB 747ms 13ms go 1.24.1

Input: sample 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 2-ffi.go 47ms 2.4ms 41.1MB 37ms 7ms go 1.24.1
javascript 1.js 77ms 0.6ms 71.4MB 50ms 20ms bun 1.2.6
javascript 1.js 114ms 0.6ms 75.8MB 100ms 20ms node 23.10.0
go 1.go 144ms 4.5ms 18.8MB 137ms 0ms go 1.24.1

knucleotide

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 7-m.go 689ms 8.1ms 40.1MB 2413ms 33ms go 1.24.1

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 7-m.go 131ms 3.0ms 22.7MB 347ms 20ms go 1.24.1

lru

Input: 1000 1000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 3.go 123ms 2.4ms 3.5MB 113ms 0ms go 1.24.1
go 3.go 134ms 3.6ms 0.5MB 127ms 0ms tinygo 0.37.0
javascript 2.js 315ms 2.2ms 62.6MB 307ms 13ms node 23.10.0
javascript 1.js 565ms 4.9ms 60.8MB 543ms 13ms node 23.10.0
javascript 2.js 669ms 4.6ms 122.7MB 723ms 60ms bun 1.2.6
javascript 1.js 839ms 6.5ms 111.5MB 937ms 80ms bun 1.2.6

Input: 1000 3000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 3.go 385ms 7.4ms 3.5MB 377ms 0ms go 1.24.1
go 3.go 389ms 4.4ms 0.5MB 377ms 0ms tinygo 0.37.0
javascript 2.js 858ms 3.1ms 69.0MB 843ms 20ms node 23.10.0
javascript 1.js 1605ms 6.6ms 67.4MB 1587ms 17ms node 23.10.0
javascript 2.js 1868ms 19ms 122.7MB 2037ms 87ms bun 1.2.6
javascript 1.js 2390ms 15ms 111.9MB 2710ms 157ms bun 1.2.6

Input: 100 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 3.go 52ms 2.6ms 3.5MB 43ms 0ms go 1.24.1
go 3.go 65ms 2.0ms 0.4MB 57ms 0ms tinygo 0.37.0
javascript 1.js 166ms 0.5ms 58.4MB 153ms 7ms node 23.10.0
javascript 2.js 168ms 0.8ms 57.3MB 160ms 10ms node 23.10.0
javascript 1.js 325ms 1.7ms 115.4MB 360ms 77ms bun 1.2.6
javascript 2.js 361ms 4.4ms 126.3MB 383ms 47ms bun 1.2.6

mandelbrot

Input: 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 3230ms 5.6ms 7.7MB 3220ms 0ms go 1.24.1
go 1.go 4083ms 22ms 3.4MB 4073ms 0ms tinygo 0.37.0

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 139ms 2.7ms 3.6MB 130ms 0ms go 1.24.1
go 1.go 170ms 0.3ms 0.5MB 160ms 0ms tinygo 0.37.0

merkletrees

Input: 17

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1-m.js 493ms 5.5ms 143.4MB 640ms 137ms bun 1.2.6
javascript 1.js 552ms 10ms 130.6MB 640ms 70ms node 23.10.0
go 1.go 886ms 4.8ms 63.1MB 863ms 10ms tinygo 0.37.0
go 2.go 1140ms 2.7ms 55.0MB 1113ms 10ms tinygo 0.37.0
go 1-m.go 1477ms 1.1ms 45.0MB 3100ms 50ms go 1.24.1
go 2-m.go 1708ms 9.0ms 40.9MB 3773ms 33ms go 1.24.1

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
javascript 1.js 120ms 0.9ms 87.8MB 107ms 33ms bun 1.2.6
javascript 1.js 165ms 1.9ms 98.3MB 163ms 37ms node 23.10.0
go 1.go 175ms 2.5ms 9.8MB 160ms 0ms tinygo 0.37.0
go 2.go 209ms 3.5ms 17.1MB 193ms 0ms tinygo 0.37.0
go 1-m.go 343ms 10ms 12.3MB 687ms 17ms go 1.24.1
go 2-m.go 376ms 1.3ms 14.0MB 800ms 27ms go 1.24.1

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 350ms 2.9ms 0.4MB 340ms 0ms tinygo 0.37.0
go 1.go 352ms 2.1ms 3.5MB 343ms 0ms go 1.24.1
javascript 6.js 459ms 1.2ms 56.0MB 443ms 10ms node 23.10.0
javascript 6.js 798ms 23ms 46.0MB 793ms 7ms bun 1.2.6

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 37ms 0.8ms 0.4MB 30ms 0ms tinygo 0.37.0
go 1.go 39ms 1.2ms 3.5MB 30ms 0ms go 1.24.1
javascript 6.js 79ms 0.5ms 56.1MB 67ms 7ms node 23.10.0
javascript 6.js 101ms 1.0ms 45.9MB 97ms 10ms bun 1.2.6

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 298ms 11ms 39.8MB 287ms 0ms tinygo 0.37.0
go 1.go 319ms 10ms 71.7MB 300ms 3ms go 1.24.1
go 2.go 429ms 0.7ms 20.3MB 420ms 0ms tinygo 0.37.0
go 2.go 746ms 4.0ms 21.5MB 733ms 3ms go 1.24.1

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 1.go 54ms 3.4ms 10.1MB 43ms 0ms tinygo 0.37.0
go 1.go 59ms 3.4ms 21.7MB 50ms 0ms go 1.24.1
go 2.go 108ms 0.7ms 4.9MB 100ms 0ms tinygo 0.37.0
go 2.go 184ms 1.0ms 6.1MB 173ms 0ms go 1.24.1

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 8.go 1188ms 4.7ms 8.6MB 1177ms 0ms go 1.24.1
javascript 3.js timeout 0.0ms 88.3MB 4987ms 23ms node 23.10.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 8.go 282ms 2.2ms 8.6MB 270ms 0ms go 1.24.1
javascript 3.js 1114ms 1.8ms 70.8MB 1097ms 17ms node 23.10.0

regex-redux

Input: 2500000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 3.go timeout 0.0ms 122.3MB 4977ms 50ms go 1.24.1
go 3.go timeout 0.0ms 135.0MB 4973ms 10ms tinygo 0.37.0

Input: 250000_in

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 3.go 1778ms 45ms 20.0MB 1760ms 27ms go 1.24.1
go 3.go 2278ms 37ms 27.6MB 2260ms 3ms tinygo 0.37.0

secp256k1

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 0-ffi.go 91ms 1.2ms 7.3MB 83ms 0ms go 1.24.1
javascript 1.js 2652ms 192ms 60.1MB 2667ms 17ms node 23.10.0
javascript 1.js 2813ms 1.1ms 84.6MB 2820ms 60ms bun 1.2.6

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 0-ffi.go 25ms 0.5ms 5.2MB 20ms 0ms go 1.24.1
javascript 1.js 674ms 3.3ms 57.0MB 683ms 17ms node 23.10.0
javascript 1.js 742ms 8.0ms 84.3MB 747ms 33ms bun 1.2.6

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
go 4-m.go 1909ms 14ms 5.4MB 7403ms 3ms go 1.24.1
javascript 6-m.js 2183ms 18ms 114.0MB 8280ms 57ms node 23.10.0
go 1.go 3659ms 17ms 5.5MB 3650ms 3ms go 1.24.1
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 481ms 0.7ms 5.5MB 1840ms 0ms go 1.24.1
javascript 6-m.js 654ms 3.0ms 114.4MB 2323ms 53ms node 23.10.0
go 1.go 916ms 2.1ms 3.5MB 907ms 0ms go 1.24.1
go 1.go 1397ms 0.6ms 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 125ms 0.9ms 5.6MB 457ms 0ms go 1.24.1
go 1.go 232ms 1.7ms 3.5MB 223ms 0ms go 1.24.1
javascript 6-m.js 278ms 5.0ms 111.3MB 840ms 50ms node 23.10.0
go 1.go 351ms 0.3ms 0.4MB 340ms 0ms tinygo 0.37.0