マッピィ Techlog

日々思うこと

【C#】【Unity】forとforeachの速度の差

 

teratailの質問の一部であったので、気になりました。

C# memory and performance tips for Unity | somasim games

によると、foreachの方が遅いとのこと。

理由としては、enumeratorが内部的に生成されることによるオーバーヘッドだそうです。

 

コードを引用すると、

foreach (var element in collection) { ... }

 

var enumerator = collection.GetEnumerator();

while (enumerator.MoveNext()) {

   var element = enumerator.Current;

   // the body of the foreach loop

}

に変換されるそうです。

うーん、foreachの方がクールな感じなんですけどね。気をつけよう。