3.7.1. 常用¶
实践 Tips¶
对频繁分配的小对象,使用 sync.Pool 对象池避免分配
自动化的 DeepCopy 是非常耗时的,其中涉及到反射,内存分配,容器(如 map)扩展等,大概比手动拷贝慢一个数量级
用 atomic.Load/StoreXXX,atomic.Value, sync.Map 等代替 Mutex。(优先级递减)
使用高效的第三方库,如用fasthttp替代 net/http
在开发环境加上-race编译选项进行竞态检查
在开发环境开启 net/http/pprof,方便实时 pprof
将所有外部IO(网络IO,磁盘IO)做成异步
参考¶
Go的pprof使用: https://www.cnblogs.com/yjf512/archive/2012/12/27/2835331.html
go pprof 性能分析: https://juejin.im/entry/5ac9cf3a518825556534c76e
Go 程序的性能优化及 pprof 的使用: https://www.cnblogs.com/snowInPluto/p/7403097.html