2009-07-22 39 views
68

無論何時創建新頁面或項目,Visual Studio都會自動爲您創建使用語句。其中一些你永遠不會使用。未使用的using指令如何影響性能?

Visual Studio具有「刪除未使用的用途」的有用功能。

我不知道是否對程序性能有任何負面影響,如果從未訪問過的using語句仍然在文件頂部提到。

+0

我在詢問之前搜索了它,但沒有出現。 – KdgDev 2009-07-22 08:36:14

+5

FWIW,這個帖子有更好的搜索引擎優化:這是谷歌對我的第一個結果。在鏈接的兩個原件中,一個不可用(刪除),另一個的措辭不同,以便爲該帖子增加一些價值,即使只是作爲重定向。 – DaveD 2012-11-02 19:07:44

回答

86

未使用的使用對應用程序的運行時性能沒有影響。

它會影響IDE的性能和整個編譯階段。原因是它創建了一個必須在其中進行名稱解析的附加名稱空間。然而,這些對於大多數情況下的IDE體驗應該不會有明顯的影響。

由於相同的原因,它也會影響在調試器中評估表達式的性能。

11

不,這只是一個編譯時/編碼風格的事情。 .NET二進制文件使用完全限定名稱。

+1

這是否意味着較長的類名和方法名對JIT編譯時間有較小但實際的影響(如果不可估量的話)? – 2010-05-05 23:08:09

5

對執行速度沒有影響,但編譯速度/智能感知可能會有一些微小的影響,因爲有更多潛在的名稱空間來搜索適當的類。我不會擔心太多,但是您可以使用Organize Usings菜單項來移除和排序使用語句。

4

不,編譯程序時涉及多個過程。當編譯器開始尋找引用(類,方法)時,它將只使用代碼中使用的引用。 using指令僅告訴編譯器在哪裏查找。很多未使用的使用語句可能會有性能問題,但只是在編譯時。在運行時,所有外部代碼都被正確鏈接或包含在二進制文件中。

5

不執行的代碼不會影響程序的性能。

1

以下鏈接A good read on why to remove unused references解釋了從應用程序中刪除未使用的引用是如何有用的。

下面是從鏈接的一些摘錄:

  1. 通過消除應用程序中的任何未使用的引用,你是 防止CLR從 運行時加載未使用的引用的模塊。這意味着您將減少您的應用程序的啓動時間,因爲加載每個模塊需要花費一些時間,並且避免編譯器加載永遠不會使用的編譯器加載元數據 。您可能會發現,根據每個庫的大小,啓動時間 明顯減少。這並不是說你的應用程序在加載後會更快,但它可以非常方便地知道你的啓動時間可能會減少。

  2. 刪除任何未使用的引用的另一個好處是,您將減少與命名空間衝突的風險。例如,如果 同時引用了System.DrawingSystem.Web.UI.WebControls, 您可能會發現在嘗試引用 Image類時會發生衝突。如果您的類中使用了與 這些引用匹配的指令,編譯器無法確定要使用哪個指令。 如果您在開發過程中經常使用自動完成功能,刪除未使用的 命名空間將會減少鍵入時 文本編輯器中自動完成值的數量。