2010-12-07 12 views
10

未使用のusingステートメント 名前空間の量はパフォーマンスに影響しますか? Visual Studioで

using System; 
using System.Collections.Generic; 
using System.Configuration; 
using System.Data; 
using System.Drawing; 
using System.IO; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

未使用usingsを持つため、パフォーマンスヒットがあり

を削除するコマンドはありますか?

+0

を見ている最初の時間に影響を与えることができ、それは良いアイデアにはなりません。私は、クラスの使用を見て、誰かが太陽の下で名前空間を「使用」しているので、それが何であるかを特定することよりも、嫌なことはほとんどありません。 –

+0

私はあなたのことを知っています。しかし、すべてのタスクを優先順位付けして計画する必要があります:)。 –

答えて

7

コードファイルで使用されるネームスペースの数は、アプリケーションのランタイムパフォーマンスに影響しません。コンパイラは型や拡張メソッドなどの追加項目の名前空間を検索する必要があるため、コンパイル時間に影響します。

のみランタイムへの影響は、私の知る名前空間の数は

  • デバッグです:指定されたコードファイルに使用される名前空間のセットPDBに保存されていると、名前解決の際にデバッガによって参照されます。多くの名前空間を持つことは、理論的にはデバッガのパフォーマンスに影響を与える可能性がありますが、実際にはこれは問題ではありません。
  • Asp.Net:ページがユーザーによって、最初のビューでコンパイルされている展開モデルを使用している場合は、名前空間の数は負荷時に与えられたページが何のパフォーマンスヒットはありません場合でも
+0

ASP.NETは、ユーザがルートフォルダに入ったときにオプションでコンパイルされるページではありませんか?したがって、パフォーマンスヒット?それとも私はここから離れていますか?参考:http://msdn.microsoft.com/en-us/library/ms178466.aspx –

+0

@ subt13それはユーザーが最初に使用する上でコンパイルされASP.Netページの起動時間に影響を与えません。私はそのシナリオを追加します。 – JaredPar

+0

優れています。素晴らしい答え/コメント。 –

1

私はいつもそれらがコンパイラによって削除されたと思っていました。

+0

実際、これらはコンパイラによってのみ使用されます。実行時には、名前空間は完全修飾クラス名の一部にすぎません。 – codymanix

3

コンパイラが参照される型を見つけるために名前空間を反復する必要があるときだけ、コンパイル時間に影響します。 (とにかくそれはとにかく)実行時のパフォーマンスにはまったく影響しません。

3

番号名前空間は、コンパイル時にクラス名を解決するために使用されます。コンパイル後、アセンブリにはSystem.Collections.Generic.List<int> myList = new System.Collections.Generic.List<int>()のような完全修飾クラス名しか含まれていないので、すべての使用はなくなります。

1

未使用のステートメントにはパフォーマンスヒットはありません。コンパイル時にのみ評価が必要です。

0

(おそらくコンパイル時に)どこかでパフォーマンスが低下していると確信していますが、それはおそらくごくわずかです。いずれにせよ、私はそのコマンドを実行することをお勧めします - それは潜在的なパフォーマンスのヒットを削除し、コードを読みやすく保守しやすくします。そして、インテリセンスから未使用のネームスペースを取り除き、コード化を容易にします:)

関連する問題