2009-05-05 4 views
3

У меня есть решение, в котором есть только 1 проект, содержащий около 30 файлов классов. Если я использую «Найти и заменить» для поиска в открывшемся в настоящее время документа, он молниеносно, но если я попытаюсь выполнить поиск по всему решению, кажется, что он занимает 3-4 секунды между каждым результатом. Даже если есть совпадения рядом друг с другом, что я вижу, есть еще 3-4-секундное отставание. Жесткий диск ничего не делает, и процессор простаивает - что может вызвать этот ларек?«Найти и заменить» медленно в Visual Studio 2008

ответ

7

Используйте «найти в файлах», поскольку это значительно быстрее.

+0

Согласен. Я никогда не использую стандартный диалог поиска и замены. – BenR

1

Проверьте, какие пути (ы) выполняет VS. Это может быть каталог верхнего уровня, приводящий к большим временам. Если это так - узкое место в каталоге для поиска.

+0

Где я могу задать путь поиска? –

+0

Нажмите Ctrl + Shift + F и посмотрите, какое значение имеет поле «Искать в:». При необходимости измените это. Кроме того, посмотрите, какие параметры поиска у вас есть, вы можете выбрать только файлы * .cpp; *. H '. – dirkgently

0

Плохой дизайн программы и код от MS. Если вы используете Resharper или аналогичные инструменты, вы увидите, что это можно сделать гораздо быстрее. Не то, чтобы я получил что-либо за рекомендацию, но если вы научитесь использовать Resharper (коммерческий аддон), вы можете сэкономить столько времени, а не просто на поиск и замену, но и множество других сложных ежедневных задач программирования.

+0

Это отлично работает на одном компьютере, но не на другом. Я еще не буду винить Visual Studio. –

3

Я нашел ответ, используя Microsoft Sysinternals tool ProcMon.exe. Поиск с использованием Ctrl-Shift-H в VS 2008 очень медленный; который должен найти во всех файлах, включая Entire Solution, с полем «Параметры поиска» «Просмотр этих типов файлов» текстовое поле пуст.

Я нашел через ProcMon.exe, что он показывает процессу DevEnv.exe, что он ищет файлы ресурсов (включая DLL, JPG, GIF и т. Д.). = (Я решил изменить «Посмотрите на эти типы файлов», чтобы обрабатывать только длинный текстовый фильтр «.vb; .resx; *. Xsd» и т. Д. И вуаля, это быстро. немного странно, что он будет искать файлы, которые не являются для поиска (с практической точки зрения). = (

результаты «devenv.exe» было значительно меньше, и быстрее с этим отфильтрованных типов файлов установлены.

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

  1. Загрузить и запустить ProcMon.exe, отключите захват на данный момент (Ctrl-E)
  2. В ProcMone.exe добавьте новый фильтр Include, где «ProcessName is devenv.exe», это помогает отсеять любые посторонние действия с аппарата и изолирует среду VS. Оставьте все остальное.
  3. Подготовить полное целое решение Поиск и замена с большим количеством файлов и библиотек DLL в проекте (динамические библиотеки, в BIN, конечно, должны быть исключены из проекта)
  4. В ProcMan.exe, запустите Capture (Ctrl- E). Ничего не покажет, потому что фильтр сужается до VS-активности.
  5. В VS, к находке рядом, и/или сделать замену
  6. Когда поиск завершен, остановите фильтр в ProcMone.exe (Ctrl-E)
  7. Изучите результаты и увидеть типы файлов открываться и запрашиваться.

В конце концов, убедитесь, что «Посмотрите на эти типы файлов» соответствуют точным элементам, которые вы хотите найти. Есть ли у кого-нибудь идеи об исключении таких файлов, как GIF, PNG, JPG и другие файлы, которые не Не нужно искать? Возможно, с регулярными выражениями !? Кто-нибудь хочет дать некоторую обратную связь, чтобы мы могли извлечь выгоду из гораздо лучшего поиска и замены опыта?

А, это намного лучше, мне не нужно ждать 5-8 секунд для поиска следующего удара.

Смежные вопросы