Go good reads
Index
Performance
We tried Go’s experimental Green Tea garbage collector and it didn’t help performance by Zach Musgrave
Parsing Protobuf Like Never Before by mcyoung
Deep dive into a go binary by Jesús Espino
If you want to know how high performance systems written in Go were built, read VictoriaLogs: https://github.com/VictoriaMetrics/VictoriaLogs by Phuong Le
- Custom bloom filters to reduce disk I/O and CPU cycles for redundant logs.
- Column-oriented block storage for better compression ratio and cache locality.
- Memory-mapped files with automatic pread fallback for zero-copy reads.
- Lock-free object pools and arena allocators to reduce heap allocations.
- Reflection-free JSON parsers for streaming at hundreds of MB/s per core.
- Compile-time templates replace text/html parsing with near-printf speed.
- Dictionary-aware Zstd compression balancing CPU cost against bandwidth savings.
- Multi-core parallelism everywhere with adaptive concurrency limits.
- Scatter-gather fan-out writes with adaptive concurrency for network saturation.
- Fast hashing and lock-free randomization for minimal contention.
How Go 1.24’s Swiss Tables saved us hundreds of gigabytes by Nayef Ghattas
Finding performance problems by diffing two Go profiles by Zach Musgrave
Optimising and Visualising Go Tests Parallelism: Why more cores don’t speed up your Go tests
Leveraging benchstat Projections in Go Benchmark Analysis!
Benchmarks and performance testing
New unique package by Michael Knyszek
This work also led us to reexamine finalizers, resulting in another proposal for an easier-to-use and more efficient replacement for finalizers. With a hash function for comparable values on the way as well, the future of building memory-efficient caches in Go is bright!
