我在程序中運行了一個分析器(非常睏倦),並且在我的重置功能(重置功能每幀運行)上顯示出很高的百分比。 的程序是這樣的:vector :: clear()花費那麼多時間?
INIT部分:
std::vector<std::vector<int>> VecOfVecOfPath;
VecOfVecOfPath.resize(20);
for(int i=0; i<20; i++) VecOfVecOfPath.reserve(640);
VecOfVecOfPath是一系列路徑的其他功能找到。 VecOfVecOfPath [i]將在每幀執行期間填充。 例如它由其他功能執行,並在每幀使用之前復位。
復位功能:
void Reset()
{
for(int i=0; i<20; i++) VecOfVecOfPath[i].clear();
}
所以重置很簡單,但它確實有一個分析器相當高的排名。
這是常見的嗎? vector :: clear()是否甚至對於內置類型向量也有這樣的開銷?
謝謝!
我試着在發佈模式下構建程序,然後成本降低到幾乎爲零。 從12〜13%到0.03〜0.04%。
然後我去了源代碼,並有像ITERATOR_DEBUG_LEVEL定義在調試模式下影響額外的操作。
所以它就像@ noggin182建議的一樣,在調試和發佈模式下情況有所不同。
引用:「Meke確保在發佈版本的分析和搜索,看看是否有任何預處理條件定義設置以提高性能 - noggin182 1月3日在15:32。」
你認爲你是不必要地調用'clear'嗎? – 2012-01-03 14:51:42
@parapurarajkumar - 我的第一件事也發生在我身上。我想我們需要更多關於'VecOfVec'的使用細節 - 也許Vecs可以回收以避免明顯。 – 2012-01-03 14:56:57
向量的矢量是什麼? – 2012-01-03 14:57:06