3.go高质量编程 | 青训营笔记

78 阅读1分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 3 天

1.编码规范

1.1 代码格式

gofmt

1.2 注释

  • 注释解释代码作用(公共常量变量)
  • 解释代码如何做的,
  • 实现的原因,
  • 代码什么情况会出错

公共符号一定要注释

1.3 命名规范

image.png

image.png

image.png

1.4 错误

1.4.1 简单错误,Error.New

image.png

1.4.2 复杂错误

image.png

1.4.3 取特定任务

image.png

2.性能优化

针对Go的性能建议: go自带的性能测试 go test 如下图。

image.png

image.png

2.1 slice的性能优化

slice预分配,指定大小,性能更好:

image.png

出现这么大的性能差异和底层数据结构有关。容量不够,先扩容再添加内容。

image.png

copy代替直接创建切片更好。如果一直引用着大切片,大切片的内存不释放。

image.png

2.2 map的性能优化

map的性能优化建议:也是有初始化大小性能更好。

image.png

image.png

2.3 string的性能优化

+性能最差,stringbuffer最好。

image.png

原因:

image.png

如果知道字符串长度,也可以采用预分配进一步提高性能的方法:

image.png

2.4 空结构体节省内存空间

不占据任何内存空间,作为占位符。

image.png

set场景,是需要实现键

image.png

2.5 atomic包

线程安全的计数器。只维护一个变量的变化,可以考虑atomic包来处理。

image.png

image.png

总结:

初期避免常见的性能陷阱。

image.png

3.性能优化分析工具

性能调优原则:

image.png

3.1 性能分析工具pprof

image.png

image.png

下图是有性能问题的代码,为了定位问题在哪,使用pprof

image.png

image.png

4.性能调优的案例

4.1

image.png

看火焰图,分析...