为什么这两个代码之间的运行时间差异如此之长?

时间:2014-03-08 12:22:32

标签: c++

对于两个代码l最初为1,除数组之外的所有变量都是long long,array是大小为N的全局int.N是10 ^ 6的数量级。但代码1超过了5秒的时间限制,但代码2以毫秒为单位运行。唯一的区别在于最后一行。 a,b,c是小于50的整数变量。

使用的编译器: - g ++

测试用例: - 3000000 50 50 50 1(N,a,b,c,l)

代码1: -

for(i=1;i<N;i++)
    {
        j=l;
        k=(j*j)%1000000;
        k=(a*k)%1000000;
        j=(b*j)%1000000;
        l=(j+k+c)%1000000;


        x=(int)l;
        ar[i]=x;
    } 

代码2: -

for(i=1;i<N;i++)
    {
        j=l;
        k=(j*j)%1000000;
        k=(a*k)%1000000;
        j=(b*j)%1000000;
        l=(j+k+c)%1000000;


        x=(int)l;
        ar[i]=1;
    }

1 个答案:

答案 0 :(得分:2)

这是编译器的优化。可能第二个代码只是替换为

for(i=1;i<N;i++)
{
    ar[i]=1;
}