性能优化的思路

305 阅读2分钟

1 影响性能的硬件因素

1.1 提升主频

从软件工程师的角度,性能优化是减少程序的执行时间。执行时间最终由哪些因素决定,就可以从这些方面着手优化性能。

程序的 CPU 执行时间 = 指令数×CPI×Clock Cycle Time

  • CPI(Cycles Per Instruction):每个指令需要的周期数,也叫做CPI。它衡量CPU执行一条指令需要占用多少个时钟周期。CPI的值通常介于1至10之间,取决于指令类型和CPU架构。
  • Clock Cycle Time:CPU的时钟周期,也叫做Clock Period。它表示CPU时钟脉冲的时间间隔,通常以纳秒(ns)或皮秒(ps)为单位。每个时钟周期对应CPU可以执行一条或多条指令。

简化地说,不动代码,从硬件层面优化,需要提升单位时间内执行指令的个数,也就是主频。 受限于功耗,主频不能够无限提升,于是有了多核技术和超线程技术。

1.2 并行计算

这个思路是并行优化,适合那些可以切分成很多并行子任务的计算任务。这个思路有个约束是阿姆达尔定律

优化后的执行时间 = 受优化影响的执行时间 / 加速倍数 + 不受优化影响的时间

不受优化影响的时间是那些不能被并行的部分,就是所有并行任务执行完后一定有个顺序执行的任务汇总执行情况。这个汇总任务就没法并行。

1.3 其他方法

加速大概率事件 比如GPU和TPU在向量和矩阵计算上相对CPU具有的优势。

流水线 像工厂流水线一样,将CPU指令进行拆分并且细化执行。不过过长的流水线会带来功耗和效率上的负面影响。

预测提高性能 "分支和冒险" “局部性原理”