AS3优化性能笔记三
2013-02-17 10:53 游乐场123 阅读(183) 评论(0) 编辑 收藏 举报尽可能使用内联代码
尽可能使用内联代码以减少代码中函数的调用次数。
Math.abs()方法计算绝对值:
const MAX_NUM:int = 500000; var arrayValues:Vector.<Number>=new Vector.<Number>(MAX_NUM,true); var i:int; for (i = 0; i< MAX_NUM; i++) { arrayValues[i] = Math.random()-Math.random(); } var started:Number = getTimer(); var currentValue:Number; for (i = 0; i< MAX_NUM; i++) { currentValue = arrayValues[i]; arrayValues[i] = Math.abs ( currentValue ); } trace( getTimer() - started ); // output : 70
内联方式,是函数调用运行速度的四倍以上。
const MAX_NUM:int = 500000; var arrayValues:Vector.<Number>=new Vector.<Number>(MAX_NUM,true); var i:int; for (i = 0; i< MAX_NUM; i++) { arrayValues[i] = Math.random()-Math.random(); } var started:Number = getTimer(); var currentValue:Number; for (i = 0; i< MAX_NUM; i++) { currentValue = arrayValues[i]; arrayValues[i] = currentValue > 0 ? currentValue : -currentValue; } trace( getTimer() - started ); // output : 15
避免计算循环中的语句
不计算循环中的语句也可以实现优化。以下代码遍历数组,但为进行优化。因为在每次遍历时都需要计算数组长度。
for (var i:int = 0; i< myArray.length; i++) { }
最好存储该值并重复使用:
var lng:int = myArray.length; for (var i:int = 0; i< lng; i++) { }
对while循环使用相反的顺序
以相反顺序进行while循环的速度比正向顺序循环快
var i:int = myArray.length; while (--i > -1) { }
尽可能避免使用alpha属性
当显示对象使用alpha值混合处理时,运行时必须将每个堆叠显示对象的颜色值与背景色混合起来,以确定最终颜色。因此会占用更多的处理器资源。
尽可能使用低帧速率
较高的帧速率会耗用更多的CPU资源和电池能量。
如果视频是应用程序中唯一的动态内容,使用低帧速率。因为运行时以本级帧速率播放加载的视频内容,而与应用程序的帧速率无关。
动态更改应用程素的帧速率,例如应用程序不执行任何动画时可降低帧速率。如果应用程序真该后台运行(已失去焦点),可进一步降低帧速率。