WaitForSingleObject при отладке (общая медлительность при отладке) - PullRequest
3 голосов
/ 25 марта 2011

Я должен сказать, что много знаю о нитях, но есть то, что сводит меня с ума.

Я использую ожидание потока с помощью функции Windows API WaitForSingleObject, и он работает нормально. Но, когда я отлаживаю свой код, кажется, что WaitForSingleObject очень, очень, очень медленно (много зависает). Но когда я просто запускаю свое приложение без отладки, WaitForSingleObject очень, очень быстро.

Почему это происходит? Это из-за сообщений, которые отправляет IDE? Или это из-за компилятора?

Это не сильно на меня влияет. Я просто думаю, что эта проблема действительно раздражает.

Редактировать: я использую Delphi 2010.

Ответы [ 2 ]

1 голос
/ 28 марта 2011

Я действительно сомневаюсь, что WaitForSingleObject - ЕДИНСТВЕННАЯ вещь, которая становится медленнее.Скорее всего, вероятно, что почти все становится медленнее, когда вы запускаете с отладкой.

Я считаю, что гораздо больше, чем вызовы Win32 API, вызовы OutputdebugString замедляют меня и все, что IDE выбирает для входа в системудействительно, просмотр событий, потому что большая загрузка этих событий или выходных сообщений сильно замедляет IDE, отладчик и, следовательно, программу, которую я отлаживаю.

Попробуйте отключить флажки просмотра событийв меню конфигурации и посмотрите, все ли становится быстрее.

Это в Сервис -> Параметры, как показано OP на его изображении, которое я также добавил здесь, для удобного доступа: enter image description here

0 голосов
/ 25 марта 2011

Добавьте больше оперативной памяти :) у вас, вероятно, не такая мощная машина.У меня была похожая проблема, но я использовал vs2010.В любом случае принципы одинаковы: запуск в режиме отладки добавляет накладные расходы из проверок, добавленных компилятором в код, и переносит накладные расходы из самой среды, которая должна управлять потоками, ресурсами и прочим в том случае, если вы хотите их видеть.

PS: Почему вы думаете, что проблема в функциях Wait *?Вы сделали простое приложение, которое использует Wait * и ведет себя так же?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...