未使用のusingディレクティブはパフォーマンスにどのように影響しますか?


110

Visual Studioは、新しいページまたはプロジェクトを作成するたびに、usingステートメントを自動的に作成します。これらのいくつかは、決して使用しません。

Visual Studioには、「未使用の使用を削除する」ための便利な機能があります。

アクセスされないusingステートメントがファイルの先頭に記載されている場合、プログラムのパフォーマンスに悪影響があるのでしょうか。


尋ねる前に検索してみましたが、表示されませんでした。
KdgDev 2009

6
FWIW、この投稿の方がSEOが優れています。Googleでの最初の結果でした。リンクされた2つのオリジナルのうち、1つは使用不可(削除)であり、もう1つは、リダイレクトとしても、この投稿に何らかの価値を追加するために十分に異なる言葉で表現されています。
DaveD

Googleがあなたの正確な設定と検索履歴を知っているので、@ DaveDが最初です。私の友人のコンピュータでは最初ではありませんでした。
ilias iliadis

回答:


133

未使用の使用は、アプリケーションの実行時パフォーマンスに影響を与えません。

IDEのパフォーマンスと全体的なコンパイル段階に影響を与える可能性があります。名前解決が発生する必要がある追加の名前空間が作成されるためです。ただし、これらはマイナーな傾向があり、ほとんどのシナリオでIDEエクスペリエンスに顕著な影響を与えることはありません。

同じ理由で、デバッガーで式を評価するパフォーマンスにも影響を与える可能性があります。


38
使用回数が増えるほど、Intellisenseは遅くなります
Riegardt Steyn

14

いいえ、それはコンパイル時/コーディングスタイルのものです。.NETバイナリは、内部では完全修飾名を使用します。


3
これは、より長いクラス名とメソッド名が、JITコンパイル時間に小さいが実際の(測定不可能な場合)影響を与えることを意味しますか?
Jared Updike、2010

8

実行速度には影響しませんが、適切なクラスを検索するためのより多くの潜在的な名前空間があるため、コンパイル速度/インテリセンスに若干の影響がある可能性があります。私はそれについてあまり心配しませんが、Organize Usingsメニュー項目を使用して、usingステートメントを削除およびソートできます。


8

次のリンクは、未使用の参照を削除する理由についての適切な資料で、アプリケーションから未使用の参照を削除することがどのように役立つかを説明しています。

以下は、リンクからの抜粋です。

  1. アプリケーションで未使用の参照を削除することによりCLR、実行時にが未使用の参照モジュールをロードするのを防ぎます。つまり、各モジュールのロードに時間がかかり、コンパイラーが決して使用されないメタデータをロードするのを回避できるため、アプリケーションの起動時間が短縮されます。各ライブラリのサイズによっては、起動時間が大幅に短縮される場合があります。これは、アプリケーションがロードされると高速になると言っているわけではありませんが、起動時間が短縮される可能性があることを知ることはかなり便利です。

  2. 未使用の参照を削除するもう1つの利点は、名前空間との競合のリスクを軽減できることです。たとえば、System.Drawingとの両方System.Web.UI.WebControlsがある場合、Imageクラスを参照しようとすると競合が発生することがあります 。これらの参照に一致するクラスのusingディレクティブを使用している場合、コンパイラーはどのディレクティブを使用するか判断できません。開発時にオートコンプリートを定期的に使用する場合、未使用の名前空間を削除すると、入力時にテキストエディターのオートコンプリート値の数が減ります。


5

いいえ、プログラムのコンパイルにはいくつかのプロセスが含まれます。コンパイラーが参照(クラス、メソッド)の検索を開始すると、コードで使用されているもののみを使用します。usingディレクティブは、コンパイラにどこを検索するかを伝えるだけです。未使用の多くのusingステートメントは、パフォーマンスの問題を引き起こす可能性がありますが、コンパイル時のみです。実行時に、すべての外部コードが適切にリンクされるか、バイナリの一部として含まれます。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.