- 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