Это своего рода неопределенный вопрос, но есть ли что-нибудь, что я могу сделать, чтобы визуальная студия замедляла приложение? Если я запускаю исполняемые файлы за пределами визуальной студии, он работает с очень приемлемой скоростью. Если я запустил его в visual studio с включенным отладчиком, он будет работать почти на 200x медленнее. Я попытался удалить и переустановить визуальную студию безрезультатно. Я удалил все мои плагины (муравьи и resharper) и все еще ничего. Я запустил проект в визуальной студии на другом компьютере, и скорость была нормальной. Что я могу сделать, чтобы решить эту проблему? Кажется, это произошло недавно, но, возможно, постепенно.
Обновление: я запускал его сейчас в других визуальных студиях, и замедление поддерживается. Мой единственный вывод заключается в том, как присвоение памяти тем скоростям, что я есть в приложении, приводит к тому, что отладчик каким-то образом замедляет работу. У кого-нибудь есть опыт в этом?
Исключения очень дороги при запуске в отладчике и могут замедлить работу приложения, если многие будут выбрасываться и пойманы. Посмотрите окно вывода Visual Studio, где вы можете увидеть выброшенные исключения.
devexpress
gridcontrol проглотил много FormatException
. После исправления ошибок от 35 секунд до 1 секунды рендеринг сетки в режиме отладки.
Вы удаляете символы с сервера символов? Это общая причина замедления.
Отметьте _NT_SYMBOL_PATH, если он установлен, или ваши параметры отладки при использовании VS 2008 +
Проблема в том, что Windows бросает специальную кучу Debug, если она обнаруживает, что ваша программа работает под отладчиком. Это, похоже, происходит на уровне ОС и не зависит от настроек режима Debug/Release для вашей компиляции.
Вы можете обойти эту "функцию", установив переменную среды: _NO_DEBUG_HEAP = 1
Эта же проблема на какое-то время меня заводила; сегодня я нашел следующее, откуда получен этот пост: http://blogs.msdn.com/b/larryosterman/archive/2008/09/03/anatomy-of-a-heisenbug.aspx
В общем, отладчик Visual Studio не замедляет работу. Это должно быть чем-то специфичным для вашего приложения.
Например, есть недавний вопрос о SO от того, кто получает исключение OutOfMemoryException при отладке, но не при запуске вне отладчика. Похоже, это связано с тем, как он выделяет память - метод чувствителен к количеству сборок, загружаемых в память. Большинство программ не будут чувствительны к этому пассивному эффекту отладчика. Возможно, вы также страдаете от какого-либо эффекта, связанного с отладчиком, но не полностью отладчиком "ошибка".
Mitch Wheat предположил, что у вас может быть антивирус. Это напомнило мне аналогичную часть программного обеспечения, которая взяла на себя внимание, чтобы обратить внимание на сборку и разгрузку сборки Visual Studio. Это была часть программного обеспечения VPN, обеспечивающая "безопасность конечных точек". Он предназначался для проверки того, какие программы вы запускали при подключении к VPN, и чтобы убедиться, что они соответствуют политике безопасности. Это означало информирование каждой загруженной сборки.
Visual Studio загружает и выгружает много сборок. Это программное обеспечение VPN настолько заинтересовало тот факт, что на самом деле это вызвало BSOD - единственный раз, когда я видел приложение, вызывающее BSOD, потому что он установил фильтр файловой системы или некоторые из них, и был уведомлен в режиме ядра. Этого было достаточно, чтобы привести систему в порядок.
Итак, в общем, найдите какой-то программный продукт, который заботится о том, что работает на вашем компьютере. Возможно, "защита конечных точек", возможно, антивирус, возможно, поисковый индекс или что-то еще.
Отладчик VS добавляет в ваш код дополнительные команды, чтобы разрешить все функциональные возможности, которые он приносит. Недостаток может замедлить ваше приложение.
Возможно, именно поэтому ваше приложение отлично работает при запуске исполняемого файла на другом компьютере.
Тогда это проблема, которая не должна вас беспокоить, потому что выпускная версия приложения имеет значение - кто заботится о производительности отладочной версии, если последняя работает хорошо.