• 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