.NET では、「for」と「foreach」のどちらのループの方が高速に実行されますか? 質問する

.NET では、「for」と「foreach」のどちらのループの方が高速に実行されますか? 質問する

どちらのループのC#/VB.NET/.NET,方が速く実行されますforforeach?

ループはループforよりも速く動作すると読んで以来、foreachずっと昔generic collections私は、すべてのコレクション、すべてarraysの などに当てはまると想定しました。

Google で調べていくつかの記事を見つけましたが、そのほとんどは結論が出ておらず (記事のコメントを読んでください)、結論が出ていません。

理想的なのは、各シナリオとそのシナリオに対する最善の解決策をリスト化することです。

たとえば(あくまでも一例です):

  1. array1000以上の文字列forを反復処理する場合、foreach
  2. IList(非ジェネリック)文字列を反復処理する場合、foreach以下よりも優れていますfor

同じことについて、Web 上で見つかったいくつかの参考資料:

  1. エマニュエル・シャンツァーによるオリジナルの素晴らしい古い記事
  2. CodeProject FOREACH と FOR
  3. ブログ - するかforeachしないかforeach、それが問題だ
  4. ASP.NET フォーラム - NET 1.1 C# forvsforeach

[編集]

読みやすさという側面とは別に、私は事実と数字に非常に興味があります。パフォーマンスの最適化を最後まで絞り込むことが重要なアプリケーションがあります。

ベストアンサー1

パトリック・スマッキアこれについてブログに書いた先月、次のような結論に達しました。

  • forループ オンはループ オンList<T>よりも 2 倍強安くなります。foreachList<T>
  • 配列のループは、 のループよりも約 2 倍安価ですList<T>
  • 結果として、配列の using でのループは、usingforでのループよりも 5 倍安価になります(これは私たち全員が行っていることだと私は信じています)。List<T>foreach

おすすめ記事