循环不变代码外提
原理
循环中不变代码外提即把产生的结果独立于循环执行次数的表达式,放到循环执行前。可以有效减少循环中的代码运算量,提高代码运行速度。编译器可以对部分代码进行不变代码外提优化,如果表达式存在指针或者引用,则编译器不会进行自动优化。
修改方式
修改前:
void fun(int arrayA [], int *p) {
for (int i = 0; i < ARRAYLEN; ++i) {
arrayA [i] = *p + *p + i;
}
}
修改后:
void fun(int arrayA [], int *p) {
int tmp = *p + *p;
for (int i = 0; i < ARRAYLEN; ++i) {
arrayA [i] = tmp + i;
}
}
父主题: 热点函数优化