学习大纲
高质量编程(如何编写更简洁清晰的代码)
高质量代码 -- 正确可靠、简洁清晰
- 边界条件
- 异常处理
- 易读易维护
编码规范
- 注释 注释应该解释代码作用 注释应该解释代码如何做的 注释应该解释代码实现的原因 注释应该解释代码什么情况会出错
- 命名规范 函数命名:当名为 foo 的包某个函数返回类型 Foo 时,可以省略类型信息而不导致歧义当名为 foo 的包某个函数返回类型 T 时 (T 并不是 Foo),可以在函数名中加入类型信息
核心目标是降低阅读理解代码的成本重点考虑上下文信息,设计简洁清晰的名称
- 控制流程 线性原理,处理逻辑尽量走直线,避免复杂的嵌套分支 正常流程代码沿着屏幕向下移动 提升代码可维护性和可读性 故障问题大多出现在复杂的条件语句和循环语句中
- 错误和异常处理
性能优化建议
- Benchmark
- Slice预分配内存
- map预分配内存
- 字符串处理
- 空结构体
性能调优实战(常用GO语言程序优化手段)
原则
- 要依靠数据不是猜测
- 要定位最大瓶颈而不是细枝末节
- 不要过早优化
- 不要过度优化
熟悉Go程序性能分析工具
PProf
pprof 功能简介
pprof 排查实战
- 项目部署
- 浏览器查看指标
pprof 的采样过程和原理
CPU采样过程
了解工程中性能优化的原则和流程
业务服务优化流程
- 建立服务性能评估手段
-
- 服务性能评估
-
- 请求流量构造
-
- 压测范围
-
- 性能数据采集
- 分析性能数据,定位性能瓶颈
- 重点优化项改造
- 优化效果验证
基础库优化
编译器运行时优化
总结
今天主要学习了性能调优的一些知识,其中有用到缓存的思想,性能调优是个大工程,对代码的规范也有一定的要求,Go语言有一些常用的性能优化建议,大部分用到了缓存的思想,然后学习一个性能调优工具PProf,借助这个工具,可以通过浏览器查看指标,提高项目的可观测性。