C#/VB.NET/.NET では、どちらのループが速く実行されますfor
かforeach
?
ずっと前に、ループはループfor
よりも高速に動作することを読んで以来、すべてのコレクション、ジェネリック コレクション、すべての配列などに当てはまると思い込んでいました。foreach
私は Google を精査し、いくつかの記事を見つけましたが、それらのほとんどは決定的ではなく (記事のコメントを読んでください)、自由回答です。
理想的なのは、各シナリオをリストし、それに対する最適なソリューションを用意することです。
例(それがどうあるべきかの単なる例):
- 1000以上の文字列の配列を反復するため -
for
よりも優れていますforeach
IList
(非ジェネリック)文字列を反復処理するため-foreach
よりも優れていますfor
同じことについてウェブ上で見つかったいくつかの参照:
- エマニュエル・シャンツァーによるオリジナルの壮大な古い記事
- CodeProject FOREACH 対。為に
- ブログ - する
foreach
かしないかforeach
、それが問題です - ASP.NET フォーラム - NET 1.1 C#
for
vsforeach
[編集]
読みやすさの側面とは別に、私は事実と数字に本当に興味があります。絞り込まれたパフォーマンス最適化のラスト マイルが問題になるアプリケーションがあります。