代码改变世界

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资源和电池能量。

如果视频是应用程序中唯一的动态内容,使用低帧速率。因为运行时以本级帧速率播放加载的视频内容,而与应用程序的帧速率无关。

动态更改应用程素的帧速率,例如应用程序不执行任何动画时可降低帧速率。如果应用程序真该后台运行(已失去焦点),可进一步降低帧速率。