web-dev-qa-db-ja.com

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

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

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

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

95
KdgDev

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

これは、IDEのパフォーマンスと全体的なコンパイル段階に影響を与える可能性があります。理由は、名前解決が発生する必要がある追加のネームスペースを作成するためです。 IDEほとんどのシナリオでの経験に顕著な影響を与えます。

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

116
JaredPar

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

13
ChrisV

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

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

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

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

8

実行速度には影響しませんが、適切なクラスを検索するための潜在的な名前空間がより多く存在するため、コンパイル速度/インテリセンスに多少の影響があります。あまり心配することはありませんが、[使用の整理]メニュー項目を使用して、usingステートメントを削除および並べ替えることができます。

7
tvanfosson

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

4
Freddy

実行されないコードは、プログラムのパフォーマンスに影響しません。

4
Jeff Leonard