Visual Studio замедляет работу приложения

2

Это своего рода неопределенный вопрос, но есть ли что-нибудь, что я могу сделать, чтобы визуальная студия замедляла приложение? Если я запускаю исполняемые файлы за пределами визуальной студии, он работает с очень приемлемой скоростью. Если я запустил его в visual studio с включенным отладчиком, он будет работать почти на 200x медленнее. Я попытался удалить и переустановить визуальную студию безрезультатно. Я удалил все мои плагины (муравьи и resharper) и все еще ничего. Я запустил проект в визуальной студии на другом компьютере, и скорость была нормальной. Что я могу сделать, чтобы решить эту проблему? Кажется, это произошло недавно, но, возможно, постепенно.

Обновление: я запускал его сейчас в других визуальных студиях, и замедление поддерживается. Мой единственный вывод заключается в том, как присвоение памяти тем скоростям, что я есть в приложении, приводит к тому, что отладчик каким-то образом замедляет работу. У кого-нибудь есть опыт в этом?

  • 0
    антивирусный сканер? ,
  • 0
    загрузка и выгрузка dll много? Медленнее в целом или просто значительно медленнее время запуска?
Показать ещё 1 комментарий
Теги:
visual-studio
debugging

5 ответов

4

Исключения очень дороги при запуске в отладчике и могут замедлить работу приложения, если многие будут выбрасываться и пойманы. Посмотрите окно вывода Visual Studio, где вы можете увидеть выброшенные исключения.

  • 0
    Исключения - причина замедления номер один в отладчике, который я видел. Перейдите в диалоговое окно «Исключения» (в меню «Отладка») и заставьте Visual Studio разбить все исключения, а не только необработанные.
  • 0
    У меня была похожая проблема, когда приложение было очень медленным во время отладки, но работало как чудо без отладки. Оказалось, что devexpress gridcontrol проглотил много FormatException . После исправления ошибок от 35 секунд до 1 секунды рендеринг сетки в режиме отладки.
3

Вы удаляете символы с сервера символов? Это общая причина замедления.

Отметьте _NT_SYMBOL_PATH, если он установлен, или ваши параметры отладки при использовании VS 2008 +

  • 0
    Возможно. Инструменты + Параметры, Отладка + Символы.
2

Проблема в том, что Windows бросает специальную кучу Debug, если она обнаруживает, что ваша программа работает под отладчиком. Это, похоже, происходит на уровне ОС и не зависит от настроек режима Debug/Release для вашей компиляции.

Вы можете обойти эту "функцию", установив переменную среды: _NO_DEBUG_HEAP = 1

Эта же проблема на какое-то время меня заводила; сегодня я нашел следующее, откуда получен этот пост: http://blogs.msdn.com/b/larryosterman/archive/2008/09/03/anatomy-of-a-heisenbug.aspx

  • 0
    Интересно! Спасибо
2

В общем, отладчик Visual Studio не замедляет работу. Это должно быть чем-то специфичным для вашего приложения.

Например, есть недавний вопрос о SO от того, кто получает исключение OutOfMemoryException при отладке, но не при запуске вне отладчика. Похоже, это связано с тем, как он выделяет память - метод чувствителен к количеству сборок, загружаемых в память. Большинство программ не будут чувствительны к этому пассивному эффекту отладчика. Возможно, вы также страдаете от какого-либо эффекта, связанного с отладчиком, но не полностью отладчиком "ошибка".


Mitch Wheat предположил, что у вас может быть антивирус. Это напомнило мне аналогичную часть программного обеспечения, которая взяла на себя внимание, чтобы обратить внимание на сборку и разгрузку сборки Visual Studio. Это была часть программного обеспечения VPN, обеспечивающая "безопасность конечных точек". Он предназначался для проверки того, какие программы вы запускали при подключении к VPN, и чтобы убедиться, что они соответствуют политике безопасности. Это означало информирование каждой загруженной сборки.

Visual Studio загружает и выгружает много сборок. Это программное обеспечение VPN настолько заинтересовало тот факт, что на самом деле это вызвало BSOD - единственный раз, когда я видел приложение, вызывающее BSOD, потому что он установил фильтр файловой системы или некоторые из них, и был уведомлен в режиме ядра. Этого было достаточно, чтобы привести систему в порядок.

Итак, в общем, найдите какой-то программный продукт, который заботится о том, что работает на вашем компьютере. Возможно, "защита конечных точек", возможно, антивирус, возможно, поисковый индекс или что-то еще.

0

Отладчик VS добавляет в ваш код дополнительные команды, чтобы разрешить все функциональные возможности, которые он приносит. Недостаток может замедлить ваше приложение.

Возможно, именно поэтому ваше приложение отлично работает при запуске исполняемого файла на другом компьютере.

Тогда это проблема, которая не должна вас беспокоить, потому что выпускная версия приложения имеет значение - кто заботится о производительности отладочной версии, если последняя работает хорошо.

  • 1
    если производительность отладчика замедляет вас настолько сильно, что это существенно влияет на вашу производительность, то это проблема, о которой вы должны заботиться.
  • 0
    согласился с @SamHolder. У меня есть приложение WPF, которое зависает в режиме отладки из-за ошибки, когда я устанавливаю ImageSource элемента управления изображением, и когда это значение представляет собой пустую строку или путь к недоступной сборке, отладчик зависает на 10-20 секунд, в результате чего мое приложение сканирует, а воспроизводимый мной звук (в приложении) прерывистый, и приложение практически не отвечает. В режиме релиза работает нормально. Поэтому я должен диагностировать проблему и исправить замедление, потому что иначе я не могу разработать приложение.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню