[AS3] ループ処理におけるカウンタ変数の減算と加算 [Edit]

ループ処理では、多くの場合カウンタ変数を使います。その値は、加算するより減算する方が速いと噂されています。

出所は、Adobeのサイトに公開された「Optimizing Performance for the Flash Platform」の「Miscellaneous optimizations」です。「whileループでは逆順を使うように」("Use reverse order for while loops")とあり、つぎのようなスクリプトが示されています。

var i:int = myArray.length;
while (--i > -1)
{
}

割り算よりも掛け算の方が速いとはいわれます。けれども、足し算と引き算で差があるという話は聞いたことがありません(他言語でも変わらないといわれます)。

実際にテストをしてみても、有意な差は認められませんでした(環境によってばらつきがあり、差はあってもせいぜい1〜2%ほどでした)。なお、プレインクリメント/デクリメントは、ポストインクリメント/デクリメントより少し速いようです(テストには、そのスクリプトも含めてあります)[*1]


[*1] 差が生じるのは、変数をポストインクリメント/デクリメントすると同時に評価する場合です。
while (i-- > 0)

コメント

この記事にコメントを書く

記事に対するテクニカルな質問はご遠慮ください(利用規約)。

その他の記事