Go Version Performance Tracking¶
Work in Progress
This page and its benchmarks are currently under active development.
Recent quality improvements have been made to fix measurement accuracy issues (dead code elimination, interface boxing, throughput accounting). All benchmarks are being re-collected across Go versions to establish a new baseline.
Do not use this data for production decisions yet. The interactive tool and results will be updated once the re-collection is complete.
Interactive tool to compare benchmark performance across Go releases.
Interactive Comparison Tool¶
Full Screen Mode
Open interactive tool in new window for better visibility.
Methodology¶
Benchmarks run with rigorous controls for consistency:
- Iterations: 20 runs per benchmark
- Benchtime: 3 seconds per iteration
- Comparison: Direct calculation of mean performance deltas between versions
- System Validation: CPU governor, load, and temperature checks before each run
- Hardware: Consistent CPU configuration across all runs
For CLI analysis with statistical significance testing, we use benchstat.
Technical details: perf-tracking documentation
Current Benchmark Suite¶
Core allocation patterns (5 benchmarks):
| Benchmark | Description | Category |
|---|---|---|
| SmallAllocation | 64-byte allocation | Memory |
| LargeAllocation | 1MB allocation | Memory |
| MapAllocation | Map with 100 entries | Data Structures |
| SliceAppend | Slice growth (1000 appends) | Data Structures |
| GCPressure | Allocation under GC pressure | GC Behavior |
Coming Soon: Expanded coverage for stdlib, networking, and crypto (Phase 5).
Key Findings¶
Go 1.24 → 1.25¶
- Overall: Stable performance (no significant regressions)
- All benchmarks within statistical noise threshold
About This Data¶
Results collected using:
- Go's standard
testingpackage benchmarks - Statistical validation with
benchstat - Local runs on consistent hardware
All benchmark source code: perf-tracking/benchmarks/