AS3 优化 之 FOR内循环

 

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

关于AS3 FOR内循环的优化

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

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

 for(var i:Number=0; i<testArray.length; i++)
 {
  tmpVar = testArray[i];
 }
}

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

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

for(var i:int=0; i<testArray.length; i++)

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

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

var l:int = testArray.length;

for(var i:int=0; i<l; 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;
}


1 Star2 Stars3 Stars4 Stars5 Stars
Loading ... Loading ...

本站游戏文字均为个人原创,转载请注明转自 9STG.COM 游手好学并加上本站链接。更多经典游戏来自COMEONGAME.COM

收藏分享:

186 个玩家


你可能还喜欢

  • No Related Post


发表回复