循环中不变代码外提即把产生的结果独立于循环执行次数的表达式,放到循环执行前。可以有效的减少循环中的代码运算量,提高代码运行速度。编译器可以对部分代码进行不变代码外提优化,如果表达式存在指针或者引用,则编译器不会进行自动优化。
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; } }