鲲鹏社区首页
中文
注册
开发者
我要评分
获取效率
正确性
完整性
易理解
在线提单
论坛求助

提取循环体内与循环无关的处理

【说明】 该条目具体可以分为两种典型场景:

  • 提取循环体中的与循环无关的处理部分,如判断条件、相同计算等,放到循环体外,避免重复计算。
  • 将循环控制条件中的函数返回值通过局部变量预取,避免在for循环中多次调用同一个与循环无关的函数,此类场景在规则PFM.RULE.STATEMENT.03中也有提及,不再赘述。

【注意事项】 不涉及

【案例】

优化前
void Calc(double *x, double *y, int bound)
{
    for (int i = 0; i < bound; i++) {
        y[i] = x[i] * CalcBase(exp(sqrt(PI)));
    }
}
优化后
void Calc(double *x, double *y, int bound)
{
    double base = CalcBase(exp(sqrt(PI)));
    for (int i = 0; i < bound; i++) {
        y[i] = x[i] * base;
    }
}