Adobeのサイトに公開された「Optimizing Performance for the Flash Platform」の「Miscellaneous optimizations」につぎのような項が示されています。最適化のためには、「whileループでは逆順を使うように」("Use reverse order for while loops")ということです。しかし、その効果は疑わしく思われます。
以前の記事「ループ処理におけるカウンタ変数の減算と加算」のテストでは、「有意な差は認められませんでした」。しかし、Internet Explorer 7またはFirefox 3/Flash Player 10/Windows Vistaの環境で、減算の方が2割ほど速いという結果が生じました。そこで、もう少し細かく試してみることにしました。
まず、加算と減算の演算そのものには差が感じられません。つぎに、ループ処理の条件式に加算を使うか減算を使うかも、影響はなさそうです。そこでたどりついたのは、比較の対象でした。前回のテストで用いた加算のテストスクリプトは、定数(MAX_NUMBER)を使ってつぎのように書きました。
while (++i < MAX_NUMBER)
新たなテストスクリプトでは、定数を使わずに数値を直接書込むことにしました。すると、前述の環境でも有意な差はなくなったように感じられます。
この結果が一般的に認められるとすれば、変数・定数よりリテラルの方がアクセスは速いということになりそうです。もっとも、スクリプトの扱い・使い回しのしやすさは大きく損なわれます。Flash Playerの「でき」に関わりそうな今回の差異は、できることなら無視して、将来の改善に期待をつなぐ方がお勧めです。