Go语言规范汇总( 四 )


性能效率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语言规范汇总】


推荐阅读