- 2009年11月18日 (水)
- Tweet
wonderflから学ぶActionScript 3.0最適化
![091118-wonderfl-optimize 091118-wonderfl-optimize](https://clockmaker.jp/blog/wp-content/uploads/2009/11/091118-wonderfl-optimize.png)
Bitmap関連
Flashの処理速度の最適化において、描画処理の最適化は最も効果があります。ここではスクリプトで高速化した検証結果をまとめてみました。 BitmapDataクラスのdraw()とcopyPixels()だとcopyPixels()のほうが160%高速。 ●copyPixelsを使用(追記あり) - forked from: 弾幕 – パーティクルの応用で弾幕 BitmapDataのチャネルを入れ替える際は、BitmapData.copyChannel()よりColorMatrixFilterを使うほうが180%高速。 ●BitmapDataのチャネルを入れ替えるのはどうやれば高速か? ベクターのグラフィックスをビットマップデータとしてキャッシュしておくと非常に高速。下記の例では同じ1000個の要素にすると230%高速。 ●BitmapDataで配列に格納すると高速化するよ ●シェイプだけだともっさりするよ BitmapDataをループ文で更新するときは、lock()・unlock()を使うと200%高速。 ●[最適化 Tips] BitmapDataのlock/unlockの効果ビルドインの計算より数値計算/if文のほうが高速
Point.distanceと数値計算では、数値計算のほうが490%高速。 ●Point.distance Math.absとMath.min、Math.maxなどはif文で計算するほうが高速。if文を使うと1100%高速。 ●Math.absとMath.min Math.maxは何のためにあるの? ●Math.max/minとただのifの速度比較配列の最適化TIPS
Arrayのshift()とunshift()は非常に重いので(5000%?)、﹁unshift は使わずに push したものを reverse﹂すると良い。 ●Shift Unshift おもすぎ!! Array.RETURNINDEXEDARRAYを使ってインデックス配列を作ると結構遅い ●Array.RETURNINDEXEDARRAYってどうよ?︵Vector.sortも追加した︶ AS3ネイティブのソートより、シェルソートというアルゴリズムを使ったほうが400%高速(要素10000個の配列で) ●AS3 sorting algorithm faster than native sorting ※追記‥ネイティブソートの場合、ソート条件(Array.NUMERIC)を指定すると遅くならないみたいです(via : uwi) ●forked from: AS3 sorting algorithm faster than native sorting数値の型
uintとintでは、基本的にはほぼ同速度。加算(i++)の際にuintのほうが120%高速 (1千万回ループで)。 ●uint vs intループ処理
アンロールという手法を使うと、forのループ文を高速化できるというTIPS。 ●アンロールで高速化Progression関連
SerialListを使うよりもParallelListを使って読み込むほうが、高速に読み込むことができる(20個の画像ファイルで600%高速)。ただしParallelListを使った場合は同時リクエストを発行することになりサーバーへの負荷上よろしくないので、使用は適切に判断する必要がある。 ●[Progression4] LoaderList, SerialList, ParallelListの比較 ※ブラウザの同時リクエスト制限数の挙動に似た、上限付き並列読み込みの拡張機能として私のほうで作っています。(リンク)他にも抑えておきたい最適化TIPS
以前、unbland.org blogさんが﹁ActionScript の最適化 Tips を wonderfl に投稿しました﹂という検証記事を掲載されてましたので、そちらとあわせて読むと様々な手法を知ることができます。ArrayやObjectの書き方を変更するだけで高速化するとかは、読みやすさにも影響するので抑えておきたいですね。var arr:Array = new Array(); var obj:Object = new Object();↓のほうが高速
var arr:Array = []; var obj:Object = {};こちらの記事も少し古いですが参考になります。
投稿者 : 池田 泰延
BookMark
ブックマークはこちらからどうぞ。
ツイート
Comment/Trackback 4件