Tips on how to write efficient AS3 >> Lost In Actionscript (2008/09/28の記事)の日本語訳。
既にこっちでも検証済みの項目はあると思いますが、一応まとめとして要点を意訳しておきます。
詳細を知りたい場合は原文を。あと、間違いがあったら指摘してくれるとうれしいです。
Array & Object constructing
new Array() と new Object() は [] と {}より3倍遅い。( これは既に結構知られてる事かも )
Index Number type for Arrays
AS2.0における list[int(0)] は list[0] より速くはない。
Create Array vs. updating Array
特に長いループ中では配列やオブジェクトを作り続けないようにしよう。
Nulling Array vs. Splicing Array
配列の要素を削除したい時は Splice の使用を避け、インデックスを null にしよう。
Nulling Object vs. Delete Object
オブジェクトの要素を削除するのは null にするよりextensiveだ。( expensiveの間違い? わかりません; )
Dictionary は弱参照で使おう。( new Dictionary(true) と引数にtrueを指定すればOK。デフォルトはfalse )
Nesting Loops
ループをネストするのは遅くなるからせいぜい2まで。あと、ループは for を使おう。
Inline code vs. function references
enterframeや長いループ中での関数への参照を少なくしよう。
(ループ中に多くの関数を実行するなってことかな)
Arguments vs. variable referencing
関数の引数はオブジェクト変数を参照するより遅いから、なるべく引数の数は少なくしよう。
Function apply scoping
Function.applyはちょっと遅いから使わない方がいいよ。
1 2 3 4 5 6 7 8 9 10 11 |
//Function.apply()の例, 関数を別のオブジェクトから実行する. private function addFunc(a:Number, b:Number):Number { return a+b; } var myFunc:Function = addFunc; //関数オブジェクトmyFuncに関数addFuncを代入 var ans:Number = myFunc.apply(null, [3.0, 6.0]); //第二引数にArrayで指定 trace(ans); //<em>output</em> //9.0 |
けっこう知らないことが多かったです。最後のやつなんて使ったことすらないという;
とりあえず参考までに。
One thought