眾所周知,flex應用程序存或多或少地存在性能方面的問題。特別是企業級大數量的應用程序,通常的解決辦法是分模塊加載,分時加載數據等措施來解決。下面我們來談一談代碼級別的優化:
1.盡可能減少程序的不必要運算。如下兩種表達式:
var a:unit = b+(1024-200)/2;
var a:unit = b+412;
很明顯下面的那個表達式運算更快。
2.盡可能地采用乘法運算來代替除法運算。如下兩個表達式:
result = num / 4;
reuslt = num * 0.25;
經過統計工具計算,乘法比除法能節約150ms的時間。
3.盡可能使用強類型。比如:
var pt:Object = {x:x,y:y};
var pt:Point = new Point(x,y);
4.使用隱式類型轉換。比如,
var pt:Point = points[i] as Point;
var pt:Point = points[i];
第二個的表達式使用的隱式類型轉換,這樣能節省開銷。
5.強制轉換有時要比用as轉換好用。如:
pt = points[(i*2) as unit];
pt = points[uint(i*2)];
6.設置條件表達式的優先級。如:
if(expensiveTest() && usuallyFalse)
if(usuallyFalse && expensiveTest())
在與運算時,應將在多數情況下為false的表達式放在前面(如第二個表達式的寫法)。
7.for循環語句中的循環條件值應為一個固定值。如:
for (var i=0; i<arr.length; i++)
for (var i=0; i<l; i++)
應采用第二種寫法,將arr的length屬性值存放到一個變量中去。
8.回調事件要比單獨派發的事件要快,更比冒泡的事件快。
9.盡量減少使用try...catch來拋出異常信息。如:
try {isNull.x = 3;} catch(e:*) {}
if(isNull) {isNull.x = 3;}
多采用第二種方法,來減少異常。
10.使用removeEventListener方法來清除閒置的事件偵聽者。