[解決済み] .NETでは、'for'と'foreach'のどちらのループが速く実行されますか?
2022-03-24 10:56:41
質問
C#/VB.NET/.NETでは、どちらのループが速く動作するのでしょうか。
for
または
foreach
?
を読んで以来、私は
for
ループの方が
foreach
をループさせます。
とうの昔に
すべてのコレクション、汎用コレクション、すべての配列などに当てはまると思っていました。
Googleで調べると、いくつかの記事が見つかりましたが、そのほとんどは結論が出ず(記事のコメントを読む)、オープンエンドになっています。
理想的なのは、それぞれのシナリオをリストアップして、それに対する最適な解決策を提示することです。
例えば(あくまで一例ですが)。
-
1000以上の配列の反復処理に
文字列
for
よりも優れています。foreach
-
に対する反復処理に
IList
(非汎用)文字列foreach
がよいでしょう。 よりもfor
同じくWebで見つけた参考文献をいくつか紹介します。
- エマニュエル・シャンツァーによるオリジナルの大昔の記事
- CodeProjectのFOREACHとの比較 FOR
-
ブログ-宛先
foreach
にするか、しないかforeach
それが問題だ -
ASP.NETフォーラム - NET 1.1 C#
for
対foreach
[編集]をクリックします。
読みやすさの面は別として、事実や数字にはとても興味があります。性能最適化の最後の1マイルが重要になるようなアプリケーションもあります。
どのように解決するのか?
パトリック・スマッキア ブログで紹介されました 先月、次のような結論に達しました。
- Listのforループはforeachの2倍強の安さです。 ループを使用します。
- 配列のループは、Listのループより2倍程度安くなります。
- 結果として、forを使った配列のループは、5倍安くなります。 foreachでListをループさせるより (これは誰もがやっていることだと思いますが)。
関連
-
[解決済み】Unity 「関連するスクリプトを読み込むことができません」「Win32Exception: システムは指定されたファイルを見つけることができません"
-
[解決済み】"指定されたパスのフォーマットはサポートされていません。"
-
[解決済み] 要素ごとの加算は、結合ループよりも分離ループの方がはるかに高速なのはなぜですか?
-
[解決済み] C#がforeachで変数を再利用するのは理由があるのか?
-
[解決済み] なぜList<T>を継承しないのですか?
-
[解決済み] foreachループの現在の反復処理のインデックスを取得するにはどうすればよいですか?
-
[解決済み] .NET String.Format()で数値の千の位にカンマを追加する
-
[解決済み] Javaでenumを繰り返し処理するためのforループ
-
[解決済み] Collatz予想の検証を行うC++のコードは、なぜ手書きのアセンブリよりも高速に動作するのでしょうか?
-
[解決済み] PHPにおけるFORとFOREACHの性能比較
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】GDI+、JPEG画像をMemoryStreamに変換する際にジェネリックエラーが発生しました。
-
[解決済み】WebForms UnobtrusiveValidationModeは、jqueryのScriptResourceMappingを必要とする
-
[解決済み】文字列が有効な DateTime " format dd/MM/yyyy " として認識されなかった。
-
[解決済み】「入力文字列が正しい形式ではありませんでした」エラーの解決方法は?[重複しています]。
-
[解決済み】WSACancelBlockingCallの例外について
-
[解決済み】2つ(またはそれ以上)のリストを1つに統合する(C# .NETで
-
[解決済み】URLから画像をダウンロードする方法
-
[解決済み] C#の配列に値を追加する
-
[解決済み】List<>の最後の要素を見つけるにはどうしたらいいですか?
-
[解決済み] LINQ文は'foreach'ループより速いですか?