C++中的栈数组就是直接创建的数组,而堆数组则是用new指针方式创建的数组,其各自的运行效率如何?本人作了以下测试:
#include<iostream>
#include<ctime>
using namespace std;
int main()
{
clock_t start, end;
int test1[3000];
int* test2 = new int[3000];
for (int i = 0; i < 3000; i++)
{
test1[i] = 0;
test2[i] = 0;
}
start = clock();
for (int i = 0; i < 10000000; i++)
{
for (int i = 0; i < 3000; i++)
{
test1[i]++;
}
}
end = clock();
cout << "操作栈数组所用时间:"<<(end - start) / CLK_TCK << endl;
start = clock();
for (int i = 0; i < 10000000; i++)
{
for (int i = 0; i < 3000; i++)
{
test2[i]++;
}
}
end = clock();
cout << "操作堆数组所用时间:" << (end - start) / CLK_TCK << endl;
return 0;
}
测试结果如下: 由此可知,操作栈数组的时间会略低于操作堆数组所用的时间。因此编程时能够直接使用数组就尽可能避免new一个堆数组出来。
|