分享

AS3代码优化

 宜宾翠屏区 2019-02-25

以下是经过测试过的

1. 数组Array:
声明数组:使用var arr = []; 而不是var arr = new Array();
复制数组:最快arr1 = arr2;其次arr1=arr2.slice();再次arr1=arr2.concat();
数组赋值:arr[0]=0;比arr.push(0);效率高

2. Math类,发现Math类的一些方法在效率上较低,如果不是很复杂的计算,建议自己写方法,比如:
var num:int=3>2?3:2;比var num:int=Math.max(3,2);效率高

3. .不会改变的属性,使用const 来定义常量:
public const STR: String = “name”;

4. .不会再被继承的类,要使用final前缀:
public final class MyClass

5. 类型转换,使用as而不要用类名转换:
比如var s:Sprite=new Sprite();
应该是var mc:MovieClip=s as MvoieClip;
而不是var mc:MovieClip=MvoieClip(s);

6. .声明变量的时候要声名类型:
var str:String="abc"而不要var str="abc"
函数也一样要声明返回值类型
function doSomthing():void{}而不是function doSomthing(){}

7. 数值计算:
如果是整数加减法运算应该使用int,乘除法使用Number
特别是应该用int做迭代,而不是Number
(var i: int = 0; i < n; i++) 不要使用 for (var i: Number = 0; i < n; i++) 
uint在各方面计算效率都比int,Number要低

8. 用乘法来代替除法:
使用5000*0.01 不应该使用: 5000/100

9. 应该在循环外定义表达式的值,而不是在循环体内,如果在循环体内,就会每循环一次计算一次,比如:
应该是:
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. 变量名和函数名的长度不影响速度。

11. 对象属性访问
var obj:Object={key:"value"}
obj.key要比obj["key"]快数倍,如果在flash中舞台上绘制出的影片剪辑,内部的又有子影片剪辑getChildAt的访问速度是最快的.
动态类访问已声明的属性比未声明的属性快3-4倍,而访问未声明但赋值的过属性比没赋值快一倍.
普通属性比get方法要快5-6倍,get方法比普通方法访问速度将近快一倍.

22. 逻辑计算-比较
1) ByteArray最快,如果时间为16单位
2) int,uint其次,20单位
3) Number,40单位
4) String,150单位
5) Object,450单位

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多