2009-05-05 91 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秒才能找到下一個命中。