Go高质量编程与性能调优|青训营笔记

57 阅读2分钟

这是我参与【第五届青训营】伴学笔记活动创作活动的第二天。今天主要学习了Go高质量编程与性能调优。高质量编程是指编写的代码要能达到正确可靠、简洁清晰、无性能隐患的目标,要注意简单性、可读性、生产力三原则。性能调优的原则是:1要依靠数据不是猜测。2要定位最大瓶颈而不是细枝末节。3不要过早优化。4不要过度优化。
要想高质量编程,首先需要知道Go语言的编码规范。编码规范主要包含代码格式,注释,命名规范,控制流程和错误和异常处理等方面。代码格式推荐使用gofmt自动格式化代码。注释要解释代码作用,要解释代码实现过程,要解释代码的外部因素,提供额外上下文和要解释代码的限制条件。命名规范中简洁胜于冗长,缩略词全大写但当其位于变量开头且不需要导出时使用全小写,变量距离其使用的地方越远则需要携带越多的上下文信息。控制流程中处理逻辑尽量走直线,避免复杂的嵌套分支。对于简单错误,优先使用errors.New创建匿名变量来直接表示。errors.Is判断一个错误是否为特定错误。errors.As在错误链上获取特定种类的错误。
性能优化的前提是满足质量因素,它是综合评估。在使用make()初始化切片时,要尽可能的提供容量信息。map也需要尽可能预分配内存。拼接字符串时,要尽量使用string.Builder。使用空结构体可以节省内存。
pprof是用于可视化和分析性能数据的工具。pprof可以展示内存分配情况,阻塞操作情况,当前所有协程的堆栈信息和堆上内存使用情况等性能数据。top查看CPU占用最高的函数。list给出相关函数代码行的占用情况。web将函数调用关系可视化。协程泄露会导致内存泄露。pprof的CPU采样主要是看函数调用和它们的占用时间。堆内存采样通过内存分配器在堆上分配和释放的内存,记录分配/释放的大小和数量。