这是我参与「第五届青训营 」伴学笔记创作活动的第 3 天
1.编码规范
1.1 代码格式
gofmt
1.2 注释
- 注释解释代码作用(公共常量变量)
- 解释代码如何做的,
- 实现的原因,
- 代码什么情况会出错
公共符号一定要注释
1.3 命名规范
1.4 错误
1.4.1 简单错误,Error.New
1.4.2 复杂错误
1.4.3 取特定任务
2.性能优化
针对Go的性能建议: go自带的性能测试 go test 如下图。
2.1 slice的性能优化
slice预分配,指定大小,性能更好:
出现这么大的性能差异和底层数据结构有关。容量不够,先扩容再添加内容。
copy代替直接创建切片更好。如果一直引用着大切片,大切片的内存不释放。
2.2 map的性能优化
map的性能优化建议:也是有初始化大小性能更好。
2.3 string的性能优化
+性能最差,stringbuffer最好。
原因:
如果知道字符串长度,也可以采用预分配进一步提高性能的方法:
2.4 空结构体节省内存空间
不占据任何内存空间,作为占位符。
set场景,是需要实现键
2.5 atomic包
线程安全的计数器。只维护一个变量的变化,可以考虑atomic包来处理。
总结:
初期避免常见的性能陷阱。
3.性能优化分析工具
性能调优原则:
3.1 性能分析工具pprof
下图是有性能问题的代码,为了定位问题在哪,使用pprof
4.性能调优的案例
4.1
看火焰图,分析...