• Use sync.Pool to re-use previously allocated objects
  • Avoid using structures containing pointers as map keys for large maps
  • Code generate marshalling code to avoid runtime reflection
  • Use strings.Builder to build up strings
  • Use strconv instead of fmt
  • Allocate capacity in make to avoid re-allocation
  • Use methods that allow you to pass byte slices

https://stephen.sh/posts/quick-go-performance-improvements