Почему отладчик D2010 делает некоторые вещи намного медленнее?

У меня есть специальное поле со списком с очень длинным списком элементов (несколько тысяч), которые нужно вычислить, когда вы его открываете. Когда я что-то тестировал, я с ужасом обнаружил, что на открытие уходит около минуты. Итак, я подключил программу (та же сборка, те же параметры) к Sampling Profiler, чтобы увидеть, что занимает так много времени, а открытие заняло всего около 5 секунд. Я попробовал запустить его прямо из Windows, и на этот раз это заняло всего 2-3 секунды, чего я и ожидал.

Так почему же тот же EXE обрабатывает числа более чем в 25 раз медленнее, когда к нему подключен отладчик Delphi? Это не что иное, как оценка условных точек останова. Кажется, что только наличие отладчика тормозит его до ползания. Кто-нибудь знает почему?


person Mason Wheeler    schedule 15.03.2010    source источник
comment
Производит ли он много отладочной информации (OutputDebugString)? Что-нибудь отображается в журнале событий?   -  person Zoë Peterson    schedule 16.03.2010
comment
@ Крэйг: Да, это так. Очень хорошая работа по экстрасенсорной отладке! Он вызывает OutputDebugString дважды за итерацию жесткого цикла. Изложите это как ответ, и я приму это.   -  person Mason Wheeler    schedule 16.03.2010
comment
OutputDebugString похож на точку останова: он помещает строку в журнал событий и заставляет ее прокручиваться со всей подразумеваемой обработкой ...   -  person Francesca    schedule 16.03.2010
comment
Возможно, вы захотите использовать настоящий инструмент ведения журнала вместо OutputDebugString, поскольку поддержка Delphi для OutputDebugString очень медленная (я считаю, что это в основном из-за того, как Delphi рисует / обновляет свой список событий для каждой записи журнала). Вы можете проверить наш инструмент ведения журнала SmartInspect, но любая современная система ведения журнала должна значительно улучшить.   -  person Dennis G.    schedule 16.03.2010


Ответы (1)


Репост: Производится ли много отладочной информации (OutputDebugString)? Что-нибудь отображается в журнале событий?

person Zoë Peterson    schedule 16.03.2010