ActionScript的最佳化

actionscript執行效率低落的問題,在運算能力遠不如PC的PDA上顯得更為嚴重。在藍色理想的一篇文章關於>Flash程序的優化當中,大陸的網友對於提升actionscript的執行效率提供了一些經驗。

2004/01/14更新:
又一份參考資料 Actionscript優化教程-閃吧 1.OOP比較消耗系統資源,某些情況下不建議使用。不過大部分情況還是採用OOP較好。
2.能用1維陣列時就不要用多為陣列。
3.陣列的遍訪採用for(... in ...)會比for( ... ; ... ; ...)快30%。
4.while比for快。
5.變數名稱越短速度越快。 (印象中在Flash Player 6以前才有用)
6.在loop中不事先宣告區域變數而直接使用,比起先在loop前宣告變數速度較快。
7.tellTarget速度比點語法快。
8.this比with快得多。
9.int比Math.floor快。
10.Flash MX未公開的ASBroadcaster的loop比MovieClip loop快。
11.使用Flash MX 2004編譯Flash MX的fla。

2004/06/27更新:
另一份參考資料 http://www.gamate.com/casestudy/flashperformance/ 1.多使用區域變數,讓用不到的變數能夠不再佔用記憶體。
2.for( ; ; )迴圈中,用減法比加法快。
3.for( in )比for( ; ; )快。
4.資料型態自動轉換盡量少用。
5.減少不必要的圖形輸出或變換。
6.盡可能使用array或系統提供的函式進行排序。
7.if比switch快。

2004/06/12更新:
8.a=b=c=0會比分開寫三行快
9.while比if快

2004/10/11更新:
參考文件:http://myweb.hinet.net/home9/benben/MMUG/swf/Inside_Flash_MX_2004.swf 10. 減少使用次表示式(common sub-expression, CSE)

for(var i=0;i { myMC[i].myName=myArray[i].myName;
myMC[i].myNAddr=myArray[i].myAddr;
myMC[i].myTel=myArray[i].myTel;
}
改成下面的寫法會更快: for(var i=0;i { var tmpMC=myMC[i];
var tmpArray=myArray[i];
myMC[i].myName=myArray[i].myName;
myMC[i].myNAddr=myArray[i].myAddr;
myMC[i].myTel=myArray[i].myTel;
}

comments powered by Disqus