C#コードを見直して、コードブロック内でスコープしていた関数レベルで範囲指定された変数を見つけましたケース)を使用します。私にとってはスコープの近くにスコープがあるのは、よりクリーンで理性的な理由だけです。ブロックレベルのスコープを好むほどの理由です。しかし、私は何か大きなパフォーマンスの影響があるかどうか疑問に思っていましたか?.NETのブロックレベルと関数レベルのスコープにパフォーマンスに影響がありますか?
答えて
パフォーマンスの違いはまったくありません。
可変スコープは変数ライフタイムとは異なります。変数は、関数スコープ内または関数内のコードブロック内で宣言されているかどうかにかかわらず、関数のスタックフレーム内に作成されます。この変数は関数の実行中に存在しますが、そのスコープに応じて変数へのアクセスを制限するのはコンパイラだけです。ほとんどの場合、おそらくノー差延 -
(。変数は、実際の代わりに、通常のローカル変数の閉鎖の一部である場合、異なる規則が適用されても注意してください)
もちろん、JITterは、複数の変数に対してレジスタまたはスタックの一部を自由に再利用できます。 – CodesInChaos
それは私が考えた線に沿っていますが、おそらくスコープの違いがガベージコレクションに影響するかもしれないと思っていました。 –
@MatthewNichols:実際にはガベージコレクションには影響しません(デバッグモードを除く)。ガベージコレクタは、コード内で参照が使用されている場所のみを対象にしています。変数の有効範囲と有効期間は関係ありません。 – Guffa
- 1. Windows Phoneプロジェクトに多数のdllがあるとパフォーマンスに影響しますか?
- 2. 関数の代わりにメソッドを使用すると、パフォーマンスに影響はありますか?
- 3. ToList()を複数回呼び出すとパフォーマンスに影響はありますか?
- 4. アセンブリ数に関するパフォーマンスとメモリへの影響
- 5. HandlersとThreadの実際のパフォーマンスに何か影響はありますか?
- 6. プロセッサ数がシングルスレッドプログラムのパフォーマンスに影響しますか?
- 7. IonicアプリでlocalStorageのパフォーマンスにどのような影響がありますか?
- 8. odbc_fetch_array()のパフォーマンスにどのような影響がありますか
- 9. console.logsがシングルページアプリケーションの/タブのメモリとパフォーマンスに影響しますか?
- 10. Rustでローカル関数を使用することにパフォーマンス面でマイナスの影響はありませんか?
- 11. クラスに[Serializable]を追加するとパフォーマンスに影響はありますか?
- 12. ボックスシャドーがスケールのパフォーマンスに影響する
- 13. Verticaテーブルの列数はクエリのパフォーマンスに影響しますか?
- 14. (foreachループ)イテレータを宣言すると、パフォーマンスに影響はありますか?
- 15. Javaでコードブロックを使用するとパフォーマンスに影響はありますか?
- 16. URIにスペース文字があるとパフォーマンスに影響しますか?
- 17. _config.GetSection( "section")["key"]の使用によるパフォーマンスへの影響はありますか?
- 18. void関数(void)はパフォーマンスにどのような影響を与えますか?
- 19. ファイルサイズがパフォーマンスにどのように影響しますか?
- 20. CPUに周波数の影響があります
- 21. 複数のキュー・マネージャが作成された場合、パフォーマンスにどのような影響がありますか?
- 22. 複数のキャンバス要素がパフォーマンスにどのように影響しますか?
- 23. Log4j2:コンソールレベルに影響するログファイルのレベル
- 24. iOSアプリケーションのコンパイル時にarmv7を使用するとパフォーマンスにどのような影響がありますか?
- 25. Windowsのレジストリ値にアクセスするとパフォーマンスにどのような影響がありますか?
- 26. 「列IN(X)」と「列= X」 - クエリのパフォーマンスに影響しますか?
- 27. php.iniの設定を変更してもパフォーマンスに影響がありません
- 28. ストアドプロシージャのサイズが実行パフォーマンスに影響しますか?
- 29. Javascript。コードの位置がパフォーマンスに影響しますか?
- 30. 数値の変換は、oracleのパフォーマンスに影響します
Twouldは、ループや変数のサイズに依存します –
関連http://programmers.stackexchange.com/questions/113262/why-declare-variables-close-to-where-the-are-used – Rotem
@AlexKrupsそれでしょうか?私は、コンパイラが宣言をループから取り除くと思います。 – Rotem