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:-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
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;
}