为什么这个微小的c代码更改会导致执行时间的巨大差异?

cur*_*ous 2 c performance

unix下面的代码需要time命令报告〜9s .

int main()
{
    double u = 0;
    double v = 0;
    double w = 0;
    int i;
    for (i = 0;i < 1000000000;++i) {
        v *= w;
        u += v;
    }
    printf("%lf\n",u);
}
Run Code Online (Sandbox Code Playgroud)

我不明白为什么执行时间当我改变几乎翻倍v *= w;用v *= u;

Gan*_*esh 5

当您更改v *= w到v *= u再有就是2个语句之间的相互依存关系.因此,第一个语句必须在执行之前完成,u += v这可能是性能提高的原因,因为编译器无法并行执行.