どちらのループのC#/VB.NET/.NET,
方が速く実行されますfor
かforeach
?
ループはループfor
よりも速く動作すると読んで以来、foreach
ずっと昔generic collections
私は、すべてのコレクション、すべてarrays
の などに当てはまると想定しました。
Google で調べていくつかの記事を見つけましたが、そのほとんどは結論が出ておらず (記事のコメントを読んでください)、結論が出ていません。
理想的なのは、各シナリオとそのシナリオに対する最善の解決策をリスト化することです。
たとえば(あくまでも一例です):
array
1000以上の文字列for
を反復処理する場合、foreach
IList
(非ジェネリック)文字列を反復処理する場合、foreach
以下よりも優れていますfor
同じことについて、Web 上で見つかったいくつかの参考資料:
- エマニュエル・シャンツァーによるオリジナルの素晴らしい古い記事
- CodeProject FOREACH と FOR
- ブログ - するか
foreach
しないかforeach
、それが問題だ - ASP.NET フォーラム - NET 1.1 C#
for
vsforeach
[編集]
読みやすさという側面とは別に、私は事実と数字に非常に興味があります。パフォーマンスの最適化を最後まで絞り込むことが重要なアプリケーションがあります。
ベストアンサー1
パトリック・スマッキアこれについてブログに書いた先月、次のような結論に達しました。
for
ループ オンはループ オンList<T>
よりも 2 倍強安くなります。foreach
List<T>
- 配列のループは、 のループよりも約 2 倍安価です
List<T>
。- 結果として、配列の using でのループは、using
for
でのループよりも 5 倍安価になります(これは私たち全員が行っていることだと私は信じています)。List<T>
foreach