用 CPI 火焰图分析 Linux 性能问题
作者:杨勇,吴一昊
1. 什么是 CPI ?
本小节讲述为什么使用 CPI 分析程序性能的意义。如果已经非常了解 CPI 对分析程序性能的意义,可以跳过本小节的阅读。
1.1 程序怎么样才能跑得快 ?
理解什么是 CPI,首先让我们思考一个问题:在一个给定的处理器上,如何才能让程序跑得更快呢?
假设程序跑得快慢的标准是程序的执行时间,那么程序执行的快慢,就可以用如下公式来表示:
程序执行时间 = 程序总指令数 x 每 CPU 时钟周期时间 x 每指令执行所需平均时钟周期数
因此,要想程序跑得快,即减少程序执行时间,我们就需要在以下三个方面下功夫:
减少程序总指令数
要减少程序执行的总指令数,可能有以下手段:
- 算法优化;好的算法设计,可能带来更少的指令执行数
- 更高效的编译器或者解释器;新的编译器或者解释器,可能对同样的源代码,生成更少的机器码。
- 用