1、优化细节代码
有一些小技巧比如:
a.用 var obj:Object = {}; 要比 var obj:Object = new Object();要好;
b.var arr:Array = []; 要比 var arr:Array = new Array(); 要好;
c.for (var i:int=0, len=arr.length; i<len; i++) 要比 for (var i:int=0; i<arr.length; i++) 要好;
d.如果不是为了保存颜色值请不要适用uint这个类型,他的速度比起 int要慢多了;
e.Array的遍历要比Object或者Dictionary的枚举要快得多。
f.if (myObj != null) 要比 if (myObj) 的速度要快, for (var i:* in myObj) 比 for (var i:String in myObj) 要快;
g.Dictionary当 weak key设置为 true 的时候要比 false 慢;
h.var myText:String = "a" + "b" + "c";
i.var myText2:String = [ "a", "b", "c" ].join("");
j.在JavaScript里面在IE下后者要更快,但是在AS里面,前者更快!
k.在循环体内声明变量和在循环体外声明变量其实速度上不会有太大的区别
l.尽可能重复使用对象而不是重新创建对象。
2、getSize()获得对象占用的内存
trace(getSize(new Shape())); // output: 236
trace(getSize(new Sprite())); // output: 412
trace(getSize(new MovieClip())); // output: 440
getSize() 方法显示对象在内存中占用的字节数。可以看到,如果不需要 MovieClip 对象的功能,使用多个 MovieClip 对象(而不是使用简单的 Shape 对象)会浪费内存。
3、图形渲染方面
flash性能最低的地方依然在于图形渲染,所以各种循环之中如果可以不包含图形变化就不要包含。把图形变换放到数据运算之后,渲染速度从9秒多降低到0.4秒不到。
有一些小技巧比如:
a.用 var obj:Object = {}; 要比 var obj:Object = new Object();要好;
b.var arr:Array = []; 要比 var arr:Array = new Array(); 要好;
c.for (var i:int=0, len=arr.length; i<len; i++) 要比 for (var i:int=0; i<arr.length; i++) 要好;
d.如果不是为了保存颜色值请不要适用uint这个类型,他的速度比起 int要慢多了;
e.Array的遍历要比Object或者Dictionary的枚举要快得多。
f.if (myObj != null) 要比 if (myObj) 的速度要快, for (var i:* in myObj) 比 for (var i:String in myObj) 要快;
g.Dictionary当 weak key设置为 true 的时候要比 false 慢;
h.var myText:String = "a" + "b" + "c";
i.var myText2:String = [ "a", "b", "c" ].join("");
j.在JavaScript里面在IE下后者要更快,但是在AS里面,前者更快!
k.在循环体内声明变量和在循环体外声明变量其实速度上不会有太大的区别
l.尽可能重复使用对象而不是重新创建对象。
2、getSize()获得对象占用的内存
trace(getSize(new Shape())); // output: 236
trace(getSize(new Sprite())); // output: 412
trace(getSize(new MovieClip())); // output: 440
getSize() 方法显示对象在内存中占用的字节数。可以看到,如果不需要 MovieClip 对象的功能,使用多个 MovieClip 对象(而不是使用简单的 Shape 对象)会浪费内存。
3、图形渲染方面
flash性能最低的地方依然在于图形渲染,所以各种循环之中如果可以不包含图形变化就不要包含。把图形变换放到数据运算之后,渲染速度从9秒多降低到0.4秒不到。