Я профилирую код отладочной сборки c ++ в MSVC 2005, и выполнение определенного кода занимает очень много времени (30+ секунд) по сравнению с (1-2 секундами) в выпуске.
Я установил для _SECURE_SCL значение 0 в параметрах компилятора (/ D _SECURE_SCL = 0) и проверил, что он установлен на ноль в источнике.
Я скопировал главных потребителей из профилировщика (AMD CodeAnalyst)
- std :: _ Iterator_base :: _ Orphan_me 19.74
- std :: _ Iterator_base :: _ Принять 9.57
- std :: _ Iterator_base :: operator = 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> :: operator ++ 29,79
- std :: _ Vector_const_iterator> :: operator ++ 26.26
- std :: _ Vector_const_iterator> :: operator * 25.74
3 функции, 60 инструкций, всего: 2666 сэмплов, 81,78% от показанных сэмплов, 2,76% от всех сессионных сэмплов
Спасибо за быстрые ответы!