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

Why is the difference in running time so long between these two codes?

本文关键字:运行时间 运行时 运行 时间差 之间 代码 两个 为什么      更新时间:2023-10-16

对于两个代码l最初是1,除阵列外,所有变量均长,数组是大小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;
    }

它是编译器的优化。可能仅用

替换第二个代码
for(i=1;i<N;i++)
{
    ar[i]=1;
}