1、改進演算法
無論對於那一種程式,好的演算法總是非常重要的,而且能夠極大地提高程式效能,所以任何效能的最佳化第一步就是從演算法或者說程式邏輯的最佳化開始,檢查自己的程式是否有多餘的運算,是否在沒有必要的時候做了無用功,往往從這些方面就能找到那些導致效能低下的地方。
2、最佳化細節代碼
針對細節總是好的,有一些小技巧比如:
用 var obj:Object = {}; 要比 var obj:Object = new Object();要好;
var arr:Array = []; 要比 var arr:Array = new Array(); 要好;
for (var i:int=0, len=arr.length; i
如果不是為了儲存顏色值請不要適用uint這個類型,他的速度比起 int要慢多了;
Array的遍曆要比Object或者Dictionary的枚舉要快得多。
if (myObj != null) 要比 if (myObj) 的速度要慢(更正, 之前把結果看反了,對不起大家~), for (var i:* in myObj) 比 for (var i:String in myObj) 要快;
Dictionary當 weak key設定為 true 的時候要比 false 慢;
var myText:String = “a” + “b” + “c”;
var myText2:String = [ "a", "b", "c" ].join(“”);
在JavaScript裡面在IE下後者要更快,但是在AS裡面,前者更快!
在迴圈體內聲明變數和在迴圈體外聲明變數其實速度上不會有太大的區別。
3、權衡程式的結構
程式的架構也非常重要,良好的結構會帶來效能和程式健壯性的提升,但是有的時候又是相互矛盾的,例如代碼寫得過於健壯,反而會影響效能,這個地方需要開發人員自己去權衡。
4、小心Flash的重繪
如果你使用的是Flash Player 的Debugger版本,那麼請在檢查效能瓶頸的時候不要忘記開啟顯示重繪地區的功能,這將幫你迅速定位到舞台上有那些地方被重繪了,找出沒有顯示任何東 西卻不斷重繪的地方,這些地方肯定是有問題的。Flash Player很笨,不會說你把一個DisplayObject的visible設定成false就放棄重繪那個顯示對象。所以請保證你的 MovieClip在visible=false的時候為停止狀態。有一點很有意思,假設兩個現實物體存在 hitTest = true 這樣的關係,那麼重繪的地區的面積很有可能 > 兩者的面積總和!
5、以空間換時間
聽起來挺虛,實則很簡單,說白了就是以記憶體換CPU,例如將不變動的值進行儲存,免去下次需要此資料的時候進行再次計算,雖然原理很簡單,但是有的時候卻很容易疏忽掉,而這個往往就造成你的演算法效率低下的問題。
6、記得銷毀你的對象
對於非常駐的對象使用完之後記得消除其引用,防止出現記憶體溢出的問題,往往要做到這一點需要有一個良好的編程習慣。
7、清除冗餘的代碼
有些代碼可能你的程式一輩子也不會執行到,請把這些沒有用的代碼或者對象清理掉,否則記憶體會被偷偷的蠶食掉。
8、小心使用useBitmapCache = true
一般情況下除非你確定這個顯示對象不可能發生變化那麼用用也無妨,不過我更推薦自己手動的用BitmapData將該對象Draw一遍,然後讓這個對象徹底消失。否則每次的變動都是巨大的效能消耗。