AS3 优化 之 FOR内循环

写游戏只要有思路,就能实现,但这也只是从功能角度出发,能不能有好的效率,才是关键,于是想积累一些关于优化方面的知识。

关于AS3 FOR内循环的优化

当我们遍历一个数组的时候 ,你可能会这样写

private function testFor() : void
{
var tmpVar:int;

for(var i:Number=0; i {
tmpVar = testArray[i];
}
}

执行这个函数50次,所用的时间是53.34毫秒。

如果我们将number类型改成int类型,如下

for(var i:int=0; i

这样所执行的时间是35.58毫秒。

如果先把数组的长度计算出来,速度会更快

var l:int = testArray.length;

for(var i:int=0; i

这个仅仅用了21.6毫秒

所以在for循环上int比number快,将length在循环外事先定义出来比直接写在for条件语句里面要快。

再看两段代码

var tmpVar:int;

for(var i:Number=0; i<100000; i++)
{
tmpVar = SomeClass.SOME_CONSTANT;
}



var tmpVar:int;
var myConstant:int = SomeClass.SOME_CONSTANT;

for(var i:Number=0; i<100000; i++)
{
tmpVar = myConstant;
}

前者的运行速度是34.08毫秒,后者的速度是 15.8毫秒

所以说 在FOR循环外先取到类属性,比拿到FOR循环内再去取类的属性的速度要快

变量在FOR内的定义
for(var i:int=0; i<100000; i++)
{
var v1:Number=10;
var v2:Number=10;
var v3:Number=10;
var v4:Number=10;
var v5:Number=10;
}
这个FOR需要用46.52毫秒,如果你用一个 var 去定义所有,将这些变量写成一行,像这样

for(var i:int=0; i<100000; i++)
{
var v1:Number=10, v2:Number=10, v3:Number=10, v4:Number=10, v5:Number=10;
}

执行之间缩短到 19.74

所以 在FOR循环内 尽量减少var这个关键字出现的次数,会提高效率

逻辑运算符的适当运用也会提高效率的

for(var i:int=0; i<100000; i++)
{
var val1:int = 4 * 2;
var val2:int = 4 * 4;
var val3:int = 4 / 2;
var val4:int = 4 / 4;
}

这段执行时间为 49.12 毫秒, 如果换成下面的代码,将会降到 35.56 毫秒

for(var i:int=0; i<100000; i++)
{
var val1:int = 4 << 1;
var val2:int = 4 << 2; var val3:int = 4 >> 1;
var val4:int = 4 >> 2;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值