性能优化方法论
动手优化性能之前,需要明确以下三个问题:
(1)如何评估性能优化的效果? 确定性能的量化指标、测试优化前的性能指标、测试优化后的性能指标。
量化指标的选择。至少要从应用程序和系统资源这两个维度,分别选择不同的指标:1)应用程序的维度,我们可以用吞吐量和请求延迟来评估应用程序的性能。2)系统资源的维度,我们可以用 CPU 使用率来评估系统的 CPU 使用情况。
行性能测试注意点:1)避免性能测试工具干扰应用程序的性能;2)避免外部环境的变化影响性能指标的评估。
(2)多个性能问题同时存在,选择优化哪些? 二八原则,并不是所有的性能问题都值得优化,找出最重要的、可以最大程度提升性能的问题。
优先优化系统资源使用问题、性能指标变化幅度最大的问题。
(3)多种优化方法,选择哪种? 选能最大提升性能的方法,但性能优化通常会带来复杂度的提升,降低程序的可维护性,还可能引发其他指标的异常。
CPU优化方法
(1)应用程序 优化
最好方法是,排除所有不必要的工作,只保留最核心的逻辑。比如减少循环的层次、减少递归、减少动态内存分配等等。
编译器优化:gcc 就提供了优化选项 -O2。
算法优化