イナヅマTVログ

Optimizing, Flash 最適化ネタ

| 0件のコメント

akihiro kamijo さんのブログにFlash最適化ネタが連続投稿されてました。
Flash コンテンツパフォーマンス最適化 (メモリ編 1)
Flash コンテンツパフォーマンス最適化 (メモリ編 2)
Flash コンテンツパフォーマンス最適化 (CPU 編)

Adobe Flash Platform : Optimizing Performance for the Flash Platform
の翻訳・要約ですが、分かりやすく書かれています。

Flash最適化を心がけるとメモリーリークに悩まされることも少なくなるはず。

書かれている中のひとつ、Object pooling は昨年のFITCでGrant Skinner先生が言ってたしこのあいだのFlash Campでもあったなぁ。
インスタンスは使い回す、が大切なんだ。
Arrayよりもメモリー消費が少ないVectorでPoolすると良いらしい。
Vectorはサイズ(length)を決めて作るとより効果的。
Vector class versus Array class

原文はPDFも用意されているのでダウンロードして大切にします。

忘れないうちにメモっとく。

ミップマップ
Flash コンテンツパフォーマンス最適化 (メモリ編 2)の”ダイレクトミップマッピング”の項
kamijoさんの別記事:Flash Player の Mip マップサポートについて
ActionScript Help:ミップマッピングの利用

2 次元イメージの場合は、ビットマップサイズを 4 または 8 で割り切れるサイズにし(例えば 640 x 128 では、320 x 64 > 160 x 32 > 80 x 16 > 40 x 8 > 20 x 4 > 10 x 2 > 5 x 1 のようにサイズを縮小できます)、3 次元テクスチャの場合はビットマップサイズを 2^n にします。MIP マップは、幅と高さが 2^n であるビットマップ(256 x 256、512 x 512、1024 x 1024 など)から生成されます。Flash Player または AIR では、幅または高さが奇数になると、ミップマッピングは終了します。

update 2010-04-09
kamijoさんのブログに追加投稿がありました。
Flash コンテンツパフォーマンス最適化 (AS3 編)
このエントリーの中にリンクされているSome ActionScript 3.0 Optimizationsの最適化ネタは一度は読んでおくべきだと思います。

for i loop の条件は array.length を毎回評価しないようにする。

// bad
for (var i = 0; i < array.length; i++)
 
// good
for (var i = 0, max = array.length; i < max; i++)

定数も複数回使う時は一度変数に代入して再利用する。

bit演算も高速化の助けになる。
4 * 2 -> 4 << 1 4 * 4 -> 4 << 2 4 / 2 -> 4 >> 1
4 / 4 -> 4 >> 2

update 2010-04-10
野中先生もAdobe devnetへ寄稿されてたんですね。
ActionScript 3.0の最適化
ActionScript 3.0におけるパフォーマンス向上のヒント

型指定は必須。
差が出るのはループの条件指定。
Mathクラスの数値演算の項は何となく理解できる。
quasimondolibsのMathutilsはネイティブMath関数群を高速化して置換えてたもんなぁー。

コメントを残す

必須欄は * がついています


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください