2012-01-26 14 views
8

私はC#4.0アプリケーションを持っており、このアプリケーションの中には多くの不必要な変数があります。同様に以下のコード内の変数_foo多くの不必要な変数がC#でパフォーマンスの問題を引き起こしますか?

public string Foo() { 
    var _foo = "foo bar"; 
    return _foo; 
} 

は、私が述べたように、このような状況では、メソッドの内部にたくさん起こります。

多くの不必要な変数(この場合説明したようなもの)がC#でのパフォーマンスの問題を引き起こしますか?

編集:

私はそれらを削除するか、またはべきではない場合、私はどんなアドバイスを求めていないのです。私の質問はすべてパフォーマンス効果です。実際、このアプリは私によって書かれたものではなく、私はこのプロジェクトの初心者です。私はちょうど見て、それが任意のperfを持っている場合疑問に思うコードの品質に影響を与えるという事実の他に、効果があります。

+0

を? 100または1.000.000?それらが不要な場合は、あなたがそれらを取り除くことを妨げているでしょうか?どのような用途があなたのものですか? –

+0

不要なことが分かっている場合は、削除してください。 –

+4

これらの未使用変数は、メンテナンス開発者の脳サイクルを無駄にするでしょう。 – chandmk

答えて

25

なり、不要な変数の多くのC#での原因のパフォーマンスの問題(私はこの 場合で説明したもののような)?

いいえ、そうではありません。

public string Foo() 
{ 
    return "foo bar"; 
} 

またはより正確に:

に比べ
.method public hidebysig instance string Foo() cil managed 
{ 
    .maxstack 1 
    .locals init (
     [0] string str) 
    L_0000: ldstr "foo bar" 
    L_0005: stloc.0 
    L_0006: ldloc.0 
    L_0007: ret 
} 

あなたはリリースモードでコンパイルしにコードを最適化する際

コンパイラは、すべての不要なものを除去するのに十分インテリジェントですそのデバッグモードの対応は全く異なります:

.method public hidebysig instance string Foo() cil managed 
{ 
    .maxstack 1 
    .locals init (
     [0] string _foo, 
     [1] string CS$1$0000) 
    L_0000: nop 
    L_0001: ldstr "foo bar" 
    L_0006: stloc.0 
    L_0007: ldloc.0 
    L_0008: stloc.1 
    L_0009: br.s L_000b 
    L_000b: ldloc.1 
    L_000c: ret 
} 

確かにnですあなたがパフォーマンスの観点から心配すべきもの。あなたが気にする必要があるのは、コードの可読性です。この最適化されたコード例は、あなたのバージョンよりはるかに読みやすいようです。

あなたは常に改善しているような状況を最適化できるコンパイラを信頼することができます。

+2

+1の投稿IL – ken2k

+0

ありがとう、ちょうど私が必要なもの。 – tugberk

1

システムで顕著なパフォーマンスの問題が発生している場合を除いて、決してパフォーマンスのためにコード化/修正するべきではありません。ソフトウェア開発者としての最初の目標は、きれいで読みやすく、エレガントなコードを書くことです。 Darinのように、上記のコンパイラは私たちのためにマシンの実行を最適化するという仕事をします。

0

未使用の変数の場合は、パフォーマンスが低下し、実行時にメモリ空間を占有するため、アセンブリのサイズが大きくなる可能性があります。さらに読書や参考のために

、次のことが確認できます。あなたのためにたくさんあるもの

https://msdn.microsoft.com/en-us/library/ms182278(v=vs.140).aspx