Visual Studio 2008中的“查找和替换”速度很慢

时间:2009-05-05 19:22:16

标签: visual-studio-2008

我的解决方案只有一个项目,大约有30个类文件。如果我使用“查找和替换”来搜索当前打开的文档,它会很快,但如果我尝试搜索整个解决方案,则每个结果之间似乎需要3-4秒。即使我可以看到彼此相邻的比赛,仍然有3-4秒的滞后。硬盘驱动器没有做任何事情,CPU处于空闲状态 - 这可能导致这种失速?

4 个答案:

答案 0 :(得分:7)

使用“在文件中查找”,因为它的速度要快得多。

答案 1 :(得分:3)

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

我通过ProcMon.exe发现它为DevEnv.exe进程显示它正在搜索资源文件(包含的DLL,JPG,GIF等)。 =(哎哟。我决定更改“查看这些文件类型”,只针对长文本过滤器“ .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. 检查结果并查看正在打开和查询的文件类型。
  8. 最后,请确保“查看这些文件类型”与您要搜索的确切项目相匹配。有没有人对排除GIF,PNG,JPG等文件以及其他不需要的文件有任何想法搜索?可能正则表达式!?有人想提供一些反馈意见,以便我们都可以从更好的搜索和替换经验中受益吗?

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

答案 2 :(得分:1)

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

答案 3 :(得分:0)

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