性能效率Memory优化【建议4.2.1.1】将多次分配小对象组合为一次分配大对象 。
【建议4.2.1.2】将多个不同的小对象绑成一个大结构,可以减少内存分配的次数 。
【建议4.2.1.3】组合内存分配的一个特殊情形是对分片数组进行预分配 。
【建议4.2.1.4】尽可能使用小数据类型,并尽可能满足硬件流水线(Pipeline)的操作,如对齐数据预取边界 。
【建议4.2.1.5】使用对象池来重用临时对象,减少内存分配 。
GC 优化【建议4.2.2.1】设置GOMAXPROCS为CPU的核心数目,或者稍高的数值 。
【建议4.2.2.2】避免频繁创建对象导致GC处理性能问题 。
其它优化建议【建议4.2.3.1】减少[]byte和string之间的转换,尽量使用[]byte来处理字符 。
【建议4.2.3.2】make申请slice/map时,根据预估大小来申请合适内存 。
【建议4.2.3.3】字符串拼接优先考虑bytes.Buffer 。
【建议4.2.3.4】避免使用CGO或者减少跨CGO调用次数 。
【建议4.2.3.5】避免高并发调用同步系统接口 。
【建议4.2.3.6】高并发时避免共享对象互斥 。
【建议4.2.3.7】长调用链或在函数中避免申明较多较大临时变量 。
【建议4.2.3.8】为高并发的轻量级任务处理创建routine池 。
【建议4.2.3.9】建议版本提供性能/内存监控的功能,并动态开启关闭,但不要长期开启pprof提供的CPU与MEM profile功能 。
【Go语言规范汇总】
推荐阅读
- Go语言基础—闭包
- 体验Go语言
- 地下车库设计与管理规范
- 龙之国物语|新手游《龙之国物语》职业选择、升级指南、任务、新人汇总攻略!
- 5个Python库可以帮你轻松的进行自然语言预处理
- 一文搞懂Go通道
- nodejs版本大文件之断点下载
- c语言0xc0000005是什么错误,vs 0xc0000005是什么错误-
- 古代文学体裁有哪些
- 标准C语言Microsoft专用C语言关键字之间的差别