ActionScript 3.0におけるパフォーマンス向上のヒント
― 野中文雄氏
野中文雄氏は、ActionScript 3.0のパフォーマンスを高める実用的なコーディングテクニックを解説した。ActionScript3.0では、データ型を指定(型指定)すると、バイトコードで最適化されてFlash Player上での処理効率が高まるため、型指定の重要性を強調する。主なポイントは以下のとおり。
- 最適化の恩恵を受けるには「強い参照」が重要。
- 強い参照は、型指定をしてドットシンタックスを用いる。
- データ型を指定しないものや、配列アクセスするものは弱参照となるため、アクセスが遅くなる。
DisplayObjectクラスにおけるvisible、alpha、removeChild()を使った非表示についても、いくつかポイントを述べた。
- visibleは手軽に表示/非表示を行う用途に向いている。
- alphaは0にして見えなくしても画面の描画負荷がかかるため、非表示には非推奨。
- removeChild()はイベントも受け取らず、描画負荷もかからないため、再利用しない場合は有効。
加えて、Sprite.hitArea=true、DisplayObject.visible=falseを設定し、表示負荷の少ない透明ボタンを例として挙げた。
続いて、Flash Player 10で登場した配列の一種、Vectorクラスも紹介された。エレメントがすべて同じデータ型で、隙間なく並ぶ制約はあるがArrayよりもエレメントのアクセスが高速である。そのほかに、ビット演算子やint型の高速化も述べた。

その他にも様々な高速化の手法が示された。その一部を紹介する。
- Textfield.textに文字列を追加する場合、演算子+=でなくTextField.appendText()メソッドを使った方が高速。
- for用いた配列のループ処理ではArray.length値は前もって型指定した変数に格納すべき。
- 整数の演算はint型かuint型で指定した方が処理が高速。
最後に高速化手法について、「処理速度は重要ではあるが、難読化が進みメンテナンス性が低下する点や、変更する工数といったデメリットも吟味して導入すべき。OSやブラウザの組み合わせ、スタンドアロン再生かブラウザ再生かでも結果が一定でない手法もあるので注意したい」と指摘した。
