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