Go 的高质量编码和性能优化 | 青训营笔记

64 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 3 天 今天主要学习的东西是 Go 的高质量编码和性能优化。主要的学习目的是如何编写更简洁清晰的代码、掌握一些常用的 GO 语言程序优化手段、熟悉 Go 程序性能分析工具以及了解工程中性能优化的原则和流程。总体的来说是比起前几节课,本课较为偏“进阶”一些。

要保证代码的高质量,需要注意的点主要就是要考虑好各种边界条件处理好各种异常情况尽量保证代码易读易维护。接下来细说一下各个内容,对于编码规范,需要注意的就是代码格式规范、注释规范、命名规范、控制流程尽量清晰要避免嵌套、要优先使用 error 来捕获简单错误,对于程序启动时的不可逆转的错误再使用 panic 来捕获。

对于性能优化的内容,要学会使用性能优化工具 benchmark。常见的性能优化手段有:对于一些数据结构要预分配内存在原有切片基础上创建新小切片的时候,尽量要用 copy 来代替 re-slice (这样可以释放原来的大内存切片)拼接字符串时尽量使用 strings.Builderbytes.Buffermap 的值用空结构体来占位以作为 set 来使用等等

要学会使用性能分析工具 pprof

image.png

可以从 GitHub 上把 Wolfogre 的测试代码拉下来动手实战一遍,通过这个过程我们已经基本可以对 pprof 的使用有一个基本的认识了。(最好要注意一下 pprof 的采样过程和采样原理)。要知道性能调优主要先保证正确性,然后才要定位到主要瓶颈。

然后后面的内容就是传统项目了:一个性能调优的小案例(这个案例先鸽了qaq,正好明天休息,来看一下这几天课程的课后小项目)。 好了米娜桑,后天见!