性能优化 | 青训营

91 阅读2分钟

学习大纲

高质量编程(如何编写更简洁清晰的代码)

高质量代码 -- 正确可靠、简洁清晰

  • 边界条件
  • 异常处理
  • 易读易维护

编码规范

  1. 注释 注释应该解释代码作用 注释应该解释代码如何做的 注释应该解释代码实现的原因 注释应该解释代码什么情况会出错
  2. 命名规范 函数命名:当名为 foo 的包某个函数返回类型 Foo 时,可以省略类型信息而不导致歧义当名为 foo 的包某个函数返回类型 T 时 (T 并不是 Foo),可以在函数名中加入类型信息

核心目标是降低阅读理解代码的成本重点考虑上下文信息,设计简洁清晰的名称

  1. 控制流程 线性原理,处理逻辑尽量走直线,避免复杂的嵌套分支 正常流程代码沿着屏幕向下移动 提升代码可维护性和可读性 故障问题大多出现在复杂的条件语句和循环语句中
  2. 错误和异常处理

性能优化建议

  1. Benchmark
  2. Slice预分配内存
  3. map预分配内存
  4. 字符串处理
  5. 空结构体

性能调优实战(常用GO语言程序优化手段)

原则

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

熟悉Go程序性能分析工具

PProf

pprof 功能简介

image.png

pprof 排查实战

  1. 项目部署
  2. 浏览器查看指标

pprof 的采样过程和原理

CPU采样过程

image.png

了解工程中性能优化的原则和流程

业务服务优化流程

  • 建立服务性能评估手段
    • 服务性能评估
    • 请求流量构造
    • 压测范围
    • 性能数据采集
  • 分析性能数据,定位性能瓶颈
  • 重点优化项改造
  • 优化效果验证

基础库优化

编译器运行时优化

总结

今天主要学习了性能调优的一些知识,其中有用到缓存的思想,性能调优是个大工程,对代码的规范也有一定的要求,Go语言有一些常用的性能优化建议,大部分用到了缓存的思想,然后学习一个性能调优工具PProf,借助这个工具,可以通过浏览器查看指标,提高项目的可观测性。