黑族社区,删除指针的时间
我对删除指针有个小问题。
我正在使用Dimension 1024x1024指针指针矩阵。由于我是动态创建它们的,因此我在程序结束时删除了为它们分配的空间。但是在通常的循环中这样做会花费很多时间 - 我使用处理器的时钟速率测量了大约2秒。如果程序运行时间仅为15秒,则2秒钟的时间会很长 - 使用这些分配的指针的函数被调用的时间不止一次。
下面是代码所测量的时间关键片包括测量:
time=clock();
for(i=0;i<xSize;i++){ //xSize is dynamic, but 1024 for the measurement
delete [] inDaten[i];
delete [] inDaten2[i];
delete [] copy[i];
}
delete inDaten; delete inDaten2; delete copy;
time=clock()-time;
time/=CLOCKS_PER_SEC;
总是长正在删除指针?或者我只是做错了事情?
我希望这里有人能帮我解决这个问题。由于我正在优化一个相当复杂的程序以加快运行速度,所以我无法使用这些2秒的代码。与所有其他部分相比,这只是太慢了。但是我仍然需要能够动态地实现这个代码。 SmartPointers可能会有帮助,但如果我理解正确,他们也需要时间来删除自己 - 只是在不同的时间...
感谢您的答案!
Baradrist
编辑:我刚刚发现,即测量这些删除的计算的速度很慢,因为我没有在释放模式编译。由于调试器发挥作用,我测量了这些(最终虚幻)数字,这让我很头疼。最终的程序会自动进行自动优化,以便几乎不再有时间参与删除操作。
反正:感谢所有有用的答案!他们给了我很多额外的知识和想法!
“inDaten”,“inDaten2”和“copy”中的对象的类型是什么?它们只是整数或类似的东西,还是它们是真实的物体? – 2010-06-24 12:01:33
你需要动态分配一切吗?你需要这么多的*单独的*分配吗?是否有可能重写程序来存储更少,更大的分配数据? – jalf 2010-06-24 12:06:12
在我的上网本上,删除double []并没有达到下一个时钟周期,所以无论是用附加的调试器运行,还是在阵列中元素的析构函数中发生了一些昂贵的事情。 – 2010-06-24 12:06:34