C#でループ(for, foreach)の処理速度比較
C#でよくループ文を行うと思います。
その時の処理速度気になりますよね。
実際にやってみた結果はとても驚きました。
処理内容
それぞれ1億回ループ実行
for : 1.4230秒
for(int i = 0; i < _num.Count(); i++) { Processing(i); }
foreach : 0.5329秒
foreach(int i in _num) { Processing(i); }
まとめ
forとforeachでは今回は約3倍の差がでました。
何回か行うと2倍ほどになるときが多いです。
でもここまでの差が生じるので、使う時は気を付けないといけないですね。
全コード
public static class LoopSpeed { //1億 private static IEnumerable<int> _num = Enumerable.Range(0, 100000000); private static Stopwatch _sw; public static void Check() { _sw = Stopwatch.StartNew(); //for for(int i = 0; i < _num.Count(); i++) { Processing(i); } Console.WriteLine("for : " + _sw.Elapsed); _sw = Stopwatch.StartNew(); //foreach foreach(int i in _num) { Processing(i); } Console.WriteLine("foreach : " + _sw.Elapsed); } private static void Processing(int i) { //処理なし } }