ActionScript 3.0 性能優化小知識
2020-07-17 13:15:19
供稿:網友
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一遍,然后讓這個對象徹底消失。否則每次的變動都是巨大的性能消耗。