高质量编程与性能调优实战|青训营笔记
这是我参与第三届青训营-后端场笔记创作活动的第2篇笔记
课程内容:
- 如何编写更简洁清晰的代码
- 常用Go语言程序优化手段
- 熟悉Go程序性能分析工具
- 了解工程中性能优化的原则和流程
01、高质量编程
简介
- 简单性
- 可读性
- 生产力 如何编写高质量的GO代码:
- 代码格式: 使用gofmt自动格式化代码,goimports进行依赖包的管理。
- 注释
- 命名规范:变量命名,函数命名,包命名
- 控制流程:避免嵌套,保持正常流程清晰;优先处理错误/特殊情况
- 错误和异常处理
性能优化建议
1.benchmark工具
- slice预分配内存,在make()初始化切片时提供容量信息,大内存未释放使用copy代替re-slice
- map预分配内存
- 字符串处理,拼接方式尽量使用strings.Builder和strings.Buffer(strings.Builder底层直接将byte数组强制转换为字符串,Buffer转换为字符串的时候重新申请一片空间)
- 使用空结构体节省内存空间。eg:使用map实现set
- aotmic包:底层使用硬件维护,比加锁(加锁通过操作系统实现,调用成本较高)性能高。
02、性能调优实战
简介
- 要依靠数据而不是猜测
- 要定位最大瓶颈
- 不要过早优化
- 不要过度优化
pprof性能分析工具
是用于可视化和分析话性能分析数据的工具,可以知道在什么地方耗费了多少CPU,Memory
pprof简介
- 掌握常用的pprof工具功能
- 灵活运用pprof工具分析解决性能问题
- 了解pprof的采样过程和工作原理
性能调优案例
- 业务服务优化
- 建立服务性能评估手段
- 分析性能数据,定位性能瓶颈
- 重点优化项改造
- 优化效果验证
- 基础库优化
- 使用已开发好的库,因为库往往通过多次验证,具有较好的性能
- 进行数据库优化,建立索引等操作
- Go语言优化
- 通过命名规范等进行代码规范
- 通过进行pprof进行性能分析
- 进行预分配内存等操作进行性能的提高