高质量编程与性能调优实战|青训营笔记

217 阅读2分钟

高质量编程与性能调优实战|青训营笔记

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

课程内容:

  • 如何编写更简洁清晰的代码
  • 常用Go语言程序优化手段
  • 熟悉Go程序性能分析工具
  • 了解工程中性能优化的原则和流程

01、高质量编程

简介

  • 简单性
  • 可读性
  • 生产力 如何编写高质量的GO代码:
  • 代码格式: 使用gofmt自动格式化代码,goimports进行依赖包的管理。
  • 注释
  • 命名规范:变量命名,函数命名,包命名
  • 控制流程:避免嵌套,保持正常流程清晰;优先处理错误/特殊情况
  • 错误和异常处理

性能优化建议

1.benchmark工具

  1. slice预分配内存,在make()初始化切片时提供容量信息,大内存未释放使用copy代替re-slice
  2. map预分配内存
  3. 字符串处理,拼接方式尽量使用strings.Builder和strings.Buffer(strings.Builder底层直接将byte数组强制转换为字符串,Buffer转换为字符串的时候重新申请一片空间)
  4. 使用空结构体节省内存空间。eg:使用map实现set
  5. aotmic包:底层使用硬件维护,比加锁(加锁通过操作系统实现,调用成本较高)性能高。

02、性能调优实战

简介

  • 要依靠数据而不是猜测
  • 要定位最大瓶颈
  • 不要过早优化
  • 不要过度优化

pprof性能分析工具

是用于可视化和分析话性能分析数据的工具,可以知道在什么地方耗费了多少CPU,Memory

pprof简介

image.png

  1. 掌握常用的pprof工具功能
  2. 灵活运用pprof工具分析解决性能问题
  3. 了解pprof的采样过程和工作原理

性能调优案例

  1. 业务服务优化
    • 建立服务性能评估手段
    • 分析性能数据,定位性能瓶颈
    • 重点优化项改造
    • 优化效果验证
  2. 基础库优化
    • 使用已开发好的库,因为库往往通过多次验证,具有较好的性能
    • 进行数据库优化,建立索引等操作
  3. Go语言优化
    • 通过命名规范等进行代码规范
    • 通过进行pprof进行性能分析
    • 进行预分配内存等操作进行性能的提高