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