スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
[ --年--月--日 --:--:-- : スポンサー広告 ]

【Unity】 foreach文は重いのでなるべくfor文を使おう

列挙/反復処理を書く際の、色んな記述の速度を測ってみた。

このお題はUnityじゃなくてC#だけれども、ひっくるめてUnityカテゴリにする。


「foreach処理は実は重い」というのを本やネットでちらほら見かけるので、実際に測ってみた。
測ってみたのは下記4種の処理。


①foreach

②for

③List.ForEachメソッド

④System.Array.ForEachメソッド



とりあえずUnity上でこのやり方で、20000要素の反復中に変数1個をインクリメントするだけの
簡単な処理をさせて測ってみた結果は以下。

(単位は秒)


1位:for
0.00018799

2位:List.ForEach
0.00032997

3位:Array.ForEach
0.00038397

4位:foreach
0.00102401



foreach文が圧倒的に遅い。

この計測結果はMacBookProのものだから、iOSやAndroidではもっと遅くなるし差も開くだろう。

「foreach文カッケーっす、for文なんてダサいし古いから使わないよね〜」とか言ってるプログラマがいたら
これを見せてやるといいだろう。(そもそもそんな人いないとは思うが...)


ForEachメソッドも処理は軽目だが、あまり使う意味もないだろうし単に回すだけなら
ここは素直にfor文で良いと思う。

foreach文が何故重いのかは、内部的に列挙ファクトリのインスタンスが生成されて反復用のメソッドが
呼ばれている( in XXX の XXX が内部で分解されてる )からのようだ。

興味がある人は調べてみてもいいだろう。


というわけで、めんどくさがらずにfor文を "意図的に" 使いましょう。
塵も積もれば何とやら。

[ 2013年10月06日 18:26:04 : Unity ]

カレンダー

プルダウン 降順 昇順 年別

10月 | 2018年11月 | 12月
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 -


全記事表示リンク

全ての記事を表示する

検索フォーム

リンク

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。