【golang】高质量编程以及代码调优 | 青训营笔记

122 阅读2分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的的第3篇笔记

本节课主要介绍了工程代码编程上的一些要求,对于代码能力比较薄弱的我有很大的帮助。

对于Go而言:

第一点,编码格式:可以使用gofmt和goimports(gofmt+依赖包管理)来自动调整编码格式(官方统一风格)

第二点,注释:需要注明代码作用、代码是如何做的、代码实现的原因、什么情况下会出错,公共符号必须注释。缩略词必须全部大写,如ServeHTTP,但若其处于变量的开头且不需要导出时,则用全小写(因为go中变量首字母大写,则可以被外部的包访问,反之则不能)

层次关系:函数->包->库

业务中,建议用error代替panic(因为panic引起的后果比较严重,程序崩溃)

性能优化:使用benchmark

go test -bench=. -benchemm

可以使用benchmark来对比分析不同代码的性能

第三点:pprof:是用于可视化和分析性能分析数据的工具。可以用于知道程序在什么地方浪费了多少CPU和Memory。

GO中有一系列提升性能的办法,包括: 自动内存管理、Go内存管理、编译器与静态分析、编译器优化,都可以提高go的性能。

具体实践中,我们可以使用Balanced GC优化对象分配,从而提高性能。

可以使用Beast mode提高代码性能。【调整函数内联的策略(更多的使用内联,会增加编译的时间,但可以提高性能)、将过程间分析转化为过程内分析,帮助其他优化,例如逃逸分析】这个过程相当于重写代码,节省调用的时间。

过程内分析:仅在函数内部进行分析

过程间分析:考虑函数调用时参数传递和返回值的数据流和控制流