以下是經(jīng)過(guò)測(cè)試過(guò)的 1. 數(shù)組Array: 聲明數(shù)組:使用var arr = []; 而不是var arr = new Array(); 復(fù)制數(shù)組:最快arr1 = arr2;其次arr1=arr2.slice();再次arr1=arr2.concat(); 數(shù)組賦值:arr[0]=0;比arr.push(0);效率高 2. Math類(lèi),發(fā)現(xiàn)Math類(lèi)的一些方法在效率上較低,如果不是很復(fù)雜的計(jì)算,建議自己寫(xiě)方法,比如: var num:int=3>2?3:2;比var num:int=Math.max(3,2);效率高 3. .不會(huì)改變的屬性,使用const 來(lái)定義常量: public const STR: String = “name”; 4. .不會(huì)再被繼承的類(lèi),要使用final前綴: public final class MyClass 5. 類(lèi)型轉(zhuǎn)換,使用as而不要用類(lèi)名轉(zhuǎn)換: 比如var s:Sprite=new Sprite(); 應(yīng)該是var mc:MovieClip=s as MvoieClip; 而不是var mc:MovieClip=MvoieClip(s); 6. .聲明變量的時(shí)候要聲名類(lèi)型: var str:String="abc"而不要var str="abc" 函數(shù)也一樣要聲明返回值類(lèi)型 function doSomthing():void{}而不是function doSomthing(){} 7. 數(shù)值計(jì)算: 如果是整數(shù)加減法運(yùn)算應(yīng)該使用int,乘除法使用Number 特別是應(yīng)該用int做迭代,而不是Number (var i: int = 0; i < n; i++) 不要使用 for (var i: Number = 0; i < n; i++) uint在各方面計(jì)算效率都比int,Number要低 8. 用乘法來(lái)代替除法: 使用5000*0.01 不應(yīng)該使用: 5000/100 9. 應(yīng)該在循環(huán)外定義表達(dá)式的值,而不是在循環(huán)體內(nèi),如果在循環(huán)體內(nèi),就會(huì)每循環(huán)一次計(jì)算一次,比如: 應(yīng)該是: var arr:Array=[1,2,3,4,5]; var num:int=arr.lenght; for(var i:int=0;i<num;i++){} 而不是: var arr:Array=[1,2,3,4,5]; for(var i:int=0;i<arr.length;i++){} 10. 變量名和函數(shù)名的長(zhǎng)度不影響速度。 11. 對(duì)象屬性訪(fǎng)問(wèn) var obj:Object={key:"value"} obj.key要比obj["key"]快數(shù)倍,如果在flash中舞臺(tái)上繪制出的影片剪輯,內(nèi)部的又有子影片剪輯getChildAt的訪(fǎng)問(wèn)速度是最快的. 動(dòng)態(tài)類(lèi)訪(fǎng)問(wèn)已聲明的屬性比未聲明的屬性快3-4倍,而訪(fǎng)問(wèn)未聲明但賦值的過(guò)屬性比沒(méi)賦值快一倍. 普通屬性比get方法要快5-6倍,get方法比普通方法訪(fǎng)問(wèn)速度將近快一倍. 22. 邏輯計(jì)算-比較 1) ByteArray最快,如果時(shí)間為16單位 2) int,uint其次,20單位 3) Number,40單位 4) String,150單位 5) Object,450單位
|