2009-05-05 92 views
3

我有一个只有1个项目的解决方案,它包含大约30个类文件。如果我使用“查找和替换”搜索当前打开的文档,它闪电般快速,但如果我尝试搜索整个解决方案,每个结果之间似乎需要3-4秒。即使我可以看到彼此相邻的比赛,但仍然有3-4秒的延迟。硬盘没有任何功能,而且CPU闲置 - 可能会导致这种失速?“Find and Replace”在Visual Studio 2008中速度很慢

回答

7

使用“查找文件”,因为它显着更快。

1

检查VS搜索的路径。这可能是导致大量时间的顶级目录。如果这样 - 缩小搜索目录的范围。

+0

我在哪里设置搜索哪条路径? – 2009-05-05 19:32:42

+0

按Ctrl + Shift + F查看“查找范围”字段具有的值。如果需要,改变这一点。另外,看看你有什么查找选项,你可能只想选择'* .cpp; *。h'文件。 – dirkgently 2009-05-05 19:37:41

0

糟糕的程序设计和来自MS的代码。如果你使用Resharper或类似的工具,你会发现这可以做得更快。并不是说我对这个建议有任何帮助,但是如果你学习使用Resharper(一个商业插件),你可以节省很多时间,不仅仅是搜索和替换,还有其他繁重的日常编程任务。

+0

这适用于一台计算机,但不适用于另一台计算机。我不会责备Visual Studio。 – 2009-05-05 19:32:26

3

我通过使用Microsoft Sysinternals tool ProcMon.exe找到了答案。在VS 2008中使用Ctrl-Shift-H进行搜索非常慢;即查找所有文件,包括整个解决方案,查找选项字段“查看这些文件类型”文本框为空。

我通过ProcMon.exe发现它为DevEnv.exe进程显示它正在搜索资源文件(包含的DLL,JPG,GIF等)。 =(Ouch。我决定改变“查看这些文件类型”,以仅处理长文本过滤器“.vb; .resx; *。xsd”等,并且瞧,它很快。有点古怪,它会搜索未搜索(实际而言)的文件。=(

“的devenv.exe”的结果是显著较少,并与设置这些过滤的文件类型更快。

这里有整个步骤重现,所以如果您有其他需要使用此过程的情况,请随时关注。

  1. 下载并运行ProcMon.exe,暂时禁用捕获(Ctrl-E)
  2. 在ProcMone.exe中,添加一个新的包含过滤器,其中“ProcessName是devenv.exe”,这有助于清除机器中的任何无关活动,并且隔离VS环境。将所有其他排除在外。
  3. 准备一个完整的整体解决方案搜索并替换项目中的大量文件和dll(DLL中的BIN当然应该排除在项目之外)
  4. 在ProcMan.exe中,启动Capture(Ctrl- E)。没有什么会显示,因为过滤器缩小到VS活动。
  5. 在VS,在查找下一个,和/或做更换
  6. 当搜索完成后,在ProcMone.exe(按Ctrl-E)
  7. 停止过滤器检查结果,看到的文件类型被打开和查询。

最后,确保“查看这些文件类型”与您要搜索的确切项目相匹配。有没有人有任何想法排除像GIF,PNG,JPG和其他文件的文件不需要搜索?可能与正则表达式!?任何人都想提供一些反馈,以便我们都能从更好的搜索和更换体验中受益?

啊,那好多了,我不必等5-8秒才能找到下一个命中。