我正在分析MSVC 2005中的調試生成C++代碼,並且某些代碼在發佈時與(1-2秒)相比需要很長時間才能執行(30+秒) 。MSVC2005 std :: _ Iterator_base ::函數調試速度慢
我已經在編譯器選項(/ D _SECURE_SCL = 0)中將_SECURE_SCL設置爲0,並在源代碼中將其設置爲零。
我抄頂消費者分析器(AMD CodeAnalyst)
- 的std :: _ Iterator_base :: _ Orphan_me 19.74
- 的std :: _ Iterator_base :: _採用9.57
- 的std :: _ Iterator_base ::運算= 8.98
- 的std :: _ Iterator_base ::〜_Iterator_base 8.55
- 的std :: _ Iterator_base :: _ Iterator_base 7.37
試圖調試代碼,並不得不等待30多秒,每次有點吮吸,有什麼我在這裏失蹤?
UPDATE: 結束語#pragma optimize()
周圍的類方法並沒有做太多,但定義/D _HAS_ITERATOR_DEBUGGING=0
將它推倒,釋放速度,這些現在我的首要探查命中(這似乎是正常的功能):
- 的std :: _ Vector_const_iterator> ::運算++ 29.79
- 的std :: _ Vector_const_iterator> ::運算++ 26.26
- 的std :: _ Vector_const_iterator> ::運算符* 25.74 種
3種功能,60條指令,共計:2666個樣本,顯示樣本的81.78%,總會話樣品
感謝您的快速答覆的2.76%!
由於您使用的是舊版本的Visual C++,請注意,禁用迭代器調試在舊版本中是相當麻煩的(例如,['ostringstream' is broken](http://connect.microsoft。COM/VisualStudio中/反饋/信息/ 435483 /禁用,具有迭代器調試死因內存腐敗,在調試模式與 - ostringstream))。這些bug中的大多數都是在VS2008或VS2010中修復的(當然,那些影響到我寫的代碼的惡意代碼已經修復)。 –