黑族社區,刪除指針的時間
我對刪除指針有個小問題。
我正在使用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