C++ 为什么这两个代码的运行时间相差这么长?

C++ 为什么这两个代码的运行时间相差这么长?,c++,C++,对于两个代码,l最初都是1,除了数组之外的所有变量都是long-long,数组是大小为N的全局int。N的顺序是10^6。但代码1超过了5秒的时间限制,但代码2以毫秒为单位运行。唯一的区别是最后一行。a、 b,c是小于50的整数变量 使用的编译器:-g++ 测试用例:- 3000000 50 1(N、a、b、c、l) 代码1:- for(i=1;i<N;i++) { j=l; k=(j*j)%1000000; k=(a*k)%1000

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

使用的编译器:-g++

测试用例:- 3000000 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;
    } 

for(i=1;i这是编译器的优化。可能第二个代码刚刚被替换为

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

for(i=1;iIs)这些计时是多次运行的平均值还是一次性的?您使用的是哪种编译器?是否启用了优化?您应该发布一个测试用例。未知因素太多,无法得出任何有意义的结论。@OMGtechy g++编译器,是的,已启用优化。可能甚至懒得计算
l
for(i=1;i<N;i++)
{
    ar[i]=1;
}