Skip to content

Go Version Performance Tracking

Benchmark performance across Go releases, collected on dedicated EC2 instances with controlled CPU configuration and automatic variance retry logic.

Warning

All benchmarks are synthetic. Results reflect isolated runtime and library behavior under controlled conditions — not production application performance. Benchmarks classified as noisy or unstable should be treated as directional only.

Methodology

Each benchmark run uses dedicated EC2 instances tuned for low variance:

  • Hardware: c6i.xlarge (Intel Ice Lake) for amd64, c7g.xlarge (AWS Graviton3) for arm64
  • Iterations: 20 runs × 3 seconds benchtime per benchmark
  • CPU controls: governor locked to performance, Turbo Boost disabled, deep C-states disabled, benchmarks pinned to cores 2–3 via taskset
  • Variance retry: benchmarks exceeding 15% CV are automatically re-run with 30 iterations (up to 3 retries)
  • Reliability classification: each benchmark is labelled reliable (CV < 5%), noisy (5–15%), or unstable (> 15%) based on the worst CV observed across all versions

For detailed methodology, see How We Measure.

Benchmark Suite

76 benchmarks across four packages:

Package Count Focus
core 5 Basic allocation patterns
runtime ~20 GC, Swiss maps, sync primitives, goroutines, stack growth
stdlib ~25 JSON, crypto (AES, SHA, RSA), I/O, regexp, binary encoding
networking ~25 TCP, TLS handshake/resume, HTTP/2, connection pools

All benchmark source: perf-tracking/benchmarks/

Platforms

Platform Instance Go versions
Linux amd64 c6i.xlarge 1.24, 1.25, 1.26
Linux arm64 c7g.xlarge 1.24, 1.25, 1.26
macOS arm64 Apple Silicon (local) 1.24, 1.25, 1.26

Key Findings

Go 1.24

  • Swiss Tables hash map implementation: faster map insertions and lookups across all map sizes

Go 1.25

  • TLS handshake throughput: cumulative ~58% improvement since Go 1.23 (TLS 1.3 fast path)

Go 1.26

  • Small allocation specialization: measurable reduction in allocation latency for sub-32-byte objects
  • io.ReadAll: ~2× throughput improvement on large reads
  • RSA-4096 key generation: ~3× faster

About This Data

  • Source: Go's standard testing package with b.Loop() (Go 1.24+)
  • Export: benchexport — computes per-benchmark mean, stddev, CV, and reliability classification
  • Each result traces back to a specific EC2 instance type, kernel version, and repo commit

Interactive Comparison Tool

Full Screen Mode

Open interactive tool in new window for better visibility.