« ActionScript3 パフォーマンスチューニング メモ1 | トップページ | AccessControlExceptionがでたときの簡単な対策 »

2010年4月24日 (土)

ActionScript3 パフォーマンスチューニング メモ2

Flash Player 10 で採用された「Vector」は型を指定でき、Arrayよりも高速に動作します。

しかしながら、使い方を誤ると痛い目にあいます。

・・・
■new Vectorは、new Array よりも遅し

 new Vector.( ) ;

 new Array( ) ;

よりも遅いです。こちらのテストでは、length 1000の配列生成で4倍ほど new Vectorの方が遅くなりました。

あまりやらないかもしれませんが、小さな配列を沢山作っては消すような場合は、Arrayの方が速くなります。

・・・

■型の違うVectorの受け渡しは遅し


 Vector. を、Vector. を受けるようなメソッドに渡すのも、それなりにコストがかかります。例えば、何らかのルールでVectorを並べ変えるメソッド

 function narabekae( v:Vector.<*> ):void

を用意して、

 var v1:Vector. ;
 narabekae( Vector.<*>( v1 ) ) ;


のように呼び出す場合、 Vector. を Vector.<*> に渡す時点で、負荷が発生します。
Vector.からVector.<*>へキャストのような処理をするわけですが、実際には「Vector() グローバル関数」という関数が呼ばれており、少しだけ負荷があります。Vectorのlengthに比例して負荷が大きくなるわけではないので通常はさほど問題ではないと思います。

しかしながら、ArrayからVectorに変えて高速化を行ったつもりが、少しずつ負荷が上がってしまうこともあるので、何でもVectorにすればいいというものではないようです。

※このあたりはランタイムの実装によって変わる可能性もあると思われます。テストは 2010/04/24時点の最新版で行っております。

4月 24, 2010 ActionScript | このエントリーを含むはてなブックマーク

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/130974/48165881

この記事へのトラックバック一覧です: ActionScript3 パフォーマンスチューニング メモ2:

コメント

ここのところFLASHはご無沙汰なんで参考になります。

単に動けばOK以上を求めると奥が深い世界が広がってますねぇ~。

暑い日が続きますが、頑張って下さい。

投稿: awa | 2010/05/11 1:23:02

コメントを書く