C 代码循环结构的优化,主要从两个方面着手 : 1. 消去除数据流计算以外的多余开销(如降低循环开销)。 可以通过 减少不必要的程序调用,减少不必要的内存引用,循环展开等来实
C 代码循环结构的优化,主要从两个方面着手 :
1. 消去除数据流计算以外的多余开销(如降低循环开销)。 可以通过 减少不必要的程序调用,减少不必要的内存引用,循环展开等来实现。
2. 提高数据数据计算的并行性。
现代处理器可以通过流水线和乱序的执行代码来优化性能,并且对机器级程序呈现的仍是顺序执行的表像。
处理器一般有多个执行单元可同时执行相同类型的指令。如下图
数据前后的关联性将阻碍程序的并行执行(如:前一指令的结果为后一指令的条件),所以要并行执行需要减弱数据的前后关联性;
并行的只要目的就是使多条相同类型的算术指令可以在不同的算术单元同时进行,使其数据流由原本的顺序执行(下图1)到可并行执行(下图2)
并行执行一般与循环展开一起使用。 下为程序实例。其中 acc1 计算与 acc0 的值无关,两条指令可并行执行。