20200229 性能优化总结

Premature optimization is the root of all evil
– DonaldKnuth

步骤:

  1. 深入理解程序, 统观大局.
    只有理清程序思路, 才能找到可能优化的点, 找到程序中别扭的地方, 同时不仅使性能更好, 也能使程序逻辑更加清晰.

  2. 准备环境脚本.
    这一步是为了使后续测试工作更加方便, 包括编译, 打包, 上传部署, 运行等.
    同时在测试程序性能时要关注 CPU, 网络磁盘IO等 (tmux 很方便).

    每次部署测试操作越简单, 就越容易进行更多的测试, 获得更多的数据, 从而把精力放在优化中, 而不是各种繁琐的流程中.

  3. 确定优化目标
    优化一定是有目标的, 不同的目标决定不同的优化方案.

  4. 分段测量性能与基准
    比如一个程序主要路径上执行ABCD四个方法, 那就先注释掉BCD, 看A的性能; 然后只注释掉CD, 看AB比A差多少; 最终找到最大瓶颈位置, 进行重点优化.

  5. 分段优化, 最终组合

  6. 查漏补缺
    用 FlameGraph 或者 GC log 各种工具分析, 调节 GC 参数等.

  7. AB Test 保证正确性

总之, 一切重点优化都要有数据支撑, 不能盲目.

bonus: 常用思路是 cache -> batch -> pipeline