给定的两个代码有什么区别。一个给人当ideone运行和其他工作正常
问题描述:
第一代码超过时限:正常工作提供了成功与0秒给定的两个代码有什么区别。一个给人当ideone运行和其他工作正常
int main()
{
int n=100000;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
{}
cout<<"ffdfdf";
}
第二码时间:给定一个时间限制超过
int main()
{
int n=100000;
bool **a=new bool*[n];
for(int i=0;i<n;i++)
{
bool[i]=new bool[n];
for(int j=0;j<n;j++)
{
bool[i][j]=1;
}
}
cout<<"ffdfdf";
}
可以任何人都可以解释为什么这两个代码片段有很大的时间差异。我不理解它。
答
bool[i]=new bool[n];
是极其昂贵参见其他陈述。
一个好的编译器将优化你的第一个程序cout << "ffdfdf";
,因为它知道,循环就不会做任何事情。
一旦你与a
条取代的大侠你bool
这么第二个片段实际上编译,你会被告知与delete[]
配对new[]
电话。
+0
thanx的额外的信息......但即使当我试图把在循环第一个节目里面的一些语句的执行,很容易编译 – HKedia
这两个代码是完全不同的。第二个使用'new'这是相当昂贵的,先不和你在第二次分配的内存数量庞大, –
什么都不做数十亿倍,通常会比显著做一些像分配的内存数十亿大块快的时代。 – StoryTeller
在第一个程序中,一个好的编译器将能够优化它。在第二个程序中,你写了很多内存位置。 –