今天看了一篇博客,介绍Go性能压测与pprof. 地址: profiling-and-optimizing-go-web-applications
其中总结的优化Tips很不错:
- 避免不必要的 heap 申请
- 对于不大的结构体,使用值比指针更好
- 对于maps和slice, 如果提前知道大小,最好预分配大小
- 如果不是必要,就不打LOG
- 如果做很多顺序读写,使用 buffered I/O
- 如果你的应用重度使用JSON,考虑使用生成器的分析序列化工具。If your application extensively uses JSON, consider utilizing parser/serializer generators (I personally prefer easyjson).
- 热点path 的每个操作都到头重要。 Every operation matters in a hot path.
原文:
- Avoid unnecessary heap allocations.
- Prefer values over pointers for not big structures.
- Preallocate maps and slices if you know the size beforehand.
- Don’t log if you don’t have to.
- Use buffered I/O if you do many sequential reads or writes.
- If your application extensively uses JSON, consider utilizing parser/serializer generators (I personally prefer easyjson).
- Every operation matters in a hot path.