All Go 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

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
1.go 1269ms 2.1ms 54.9MB 1247ms 7ms tinygo 0.37.0
1-m.go 2414ms 64ms 46.3MB 5500ms 40ms go 1.24.1

Input: 15

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
1.go 117ms 2.2ms 5.6MB 107ms 0ms tinygo 0.37.0
1-m.go 211ms 1.3ms 7.9MB 373ms 10ms go 1.24.1

coro-prime-sieve

Input: 4000

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
1-m.go 457ms 43ms 14.8MB 1773ms 0ms go 1.24.1
1.go 741ms 2.7ms 269.0MB 683ms 43ms tinygo 0.37.0

Input: 1000

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
1-m.go 42ms 3.4ms 7.5MB 137ms 0ms go 1.24.1
1.go 73ms 2.2ms 68.8MB 50ms 10ms tinygo 0.37.0

edigits

Input: 250001

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
1.go 120ms 0.5ms 10.3MB 110ms 0ms go 1.24.1

Input: 100000

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
1.go 34ms 0.7ms 8.2MB 30ms 0ms go 1.24.1

fannkuch-redux

Input: 11

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

Input: 10

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

fasta

Input: 2500000

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

Input: 250000

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

helloworld

Input: QwQ

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
1.go 0.9ms 0.1ms 0.4MB 0ms 0ms tinygo 0.37.0
1.go 1.3ms 0.7ms 3.4MB 0ms 0ms go 1.24.1

http-server

Input: 3000

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
1-http2.go 123ms 7.0ms 56.3MB 340ms 93ms go 1.24.1
1-m.go 427ms 28ms 170.8MB 743ms 673ms go 1.24.1
2-m.go 435ms 0.9ms 168.4MB 703ms 713ms go 1.24.1

Input: 500

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
1-http2.go 30ms 1.4ms 25.6MB 53ms 20ms go 1.24.1
1-m.go 76ms 6.3ms 36.7MB 100ms 110ms go 1.24.1
2-m.go 77ms 12ms 33.7MB 93ms 120ms go 1.24.1

json-serde

Input: sample 5000

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
2-ffi.go 47ms 2.4ms 41.1MB 37ms 7ms go 1.24.1
1.go 144ms 4.5ms 18.8MB 137ms 0ms go 1.24.1

Input: canada 15

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
2-ffi.go 255ms 13ms 151.3MB 243ms 50ms go 1.24.1
1.go 760ms 6.5ms 107.0MB 747ms 13ms go 1.24.1

knucleotide

Input: 2500000_in

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

Input: 250000_in

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

lru

Input: 1000 1000000

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
3.go 123ms 2.4ms 3.5MB 113ms 0ms go 1.24.1
3.go 134ms 3.6ms 0.5MB 127ms 0ms tinygo 0.37.0

Input: 1000 3000000

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
3.go 385ms 7.4ms 3.5MB 377ms 0ms go 1.24.1
3.go 389ms 4.4ms 0.5MB 377ms 0ms tinygo 0.37.0

Input: 100 500000

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
3.go 52ms 2.6ms 3.5MB 43ms 0ms go 1.24.1
3.go 65ms 2.0ms 0.4MB 57ms 0ms tinygo 0.37.0

mandelbrot

Input: 5000

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

Input: 1000

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

merkletrees

Input: 17

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
1.go 886ms 4.8ms 63.1MB 863ms 10ms tinygo 0.37.0
2.go 1140ms 2.7ms 55.0MB 1113ms 10ms tinygo 0.37.0
1-m.go 1477ms 1.1ms 45.0MB 3100ms 50ms go 1.24.1
2-m.go 1708ms 9.0ms 40.9MB 3773ms 33ms go 1.24.1

Input: 15

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
1.go 175ms 2.5ms 9.8MB 160ms 0ms tinygo 0.37.0
2.go 209ms 3.5ms 17.1MB 193ms 0ms tinygo 0.37.0
1-m.go 343ms 10ms 12.3MB 687ms 17ms go 1.24.1
2-m.go 376ms 1.3ms 14.0MB 800ms 27ms go 1.24.1

nbody

Input: 5000000

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
1.go 350ms 2.9ms 0.4MB 340ms 0ms tinygo 0.37.0
1.go 352ms 2.1ms 3.5MB 343ms 0ms go 1.24.1

Input: 500000

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
1.go 37ms 0.8ms 0.4MB 30ms 0ms tinygo 0.37.0
1.go 39ms 1.2ms 3.5MB 30ms 0ms go 1.24.1

nsieve

Input: 12

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

Input: 10

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

pidigits

Input: 8000

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
8.go 1188ms 4.7ms 8.6MB 1177ms 0ms go 1.24.1

Input: 4000

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
8.go 282ms 2.2ms 8.6MB 270ms 0ms go 1.24.1

regex-redux

Input: 2500000_in

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

Input: 250000_in

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

secp256k1

Input: 2000

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
0-ffi.go 91ms 1.2ms 7.3MB 83ms 0ms go 1.24.1

Input: 500

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
0-ffi.go 25ms 0.5ms 5.2MB 20ms 0ms go 1.24.1

spectral-norm

Input: 8000

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
4-m.go 1909ms 14ms 5.4MB 7403ms 3ms go 1.24.1
1.go 3659ms 17ms 5.5MB 3650ms 3ms go 1.24.1
1.go timeout 0.0ms 0.5MB 4990ms 0ms tinygo 0.37.0

Input: 4000

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
4-m.go 481ms 0.7ms 5.5MB 1840ms 0ms go 1.24.1
1.go 916ms 2.1ms 3.5MB 907ms 0ms go 1.24.1
1.go 1397ms 0.6ms 0.5MB 1390ms 0ms tinygo 0.37.0

Input: 2000

code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
4-m.go 125ms 0.9ms 5.6MB 457ms 0ms go 1.24.1
1.go 232ms 1.7ms 3.5MB 223ms 0ms go 1.24.1
1.go 351ms 0.3ms 0.4MB 340ms 0ms tinygo 0.37.0