您的位置:首页 > 其它

数组方法执行效率的比较

2011-05-18 14:30 239 查看
public class ForEachTest extends Sprite
{
private var _len:int = 500000;
private var _arr1:Vector.<Number>;
private var _arr2:Vector.<Number>;
private var _arr3:Vector.<Number>;
private var _arr4:Vector.<Number>;
private var _arr5:Vector.<Number>;

public function ForEachTest()
{
super();
_arr1 = new Vector.<Number>(_len);
_arr2 = new Vector.<Number>(_len);
_arr3 = new Vector.<Number>(_len);
_arr4 = new Vector.<Number>(_len);
_arr5 = new Vector.<Number>;
test();
}

private function test():void
{
var time:int;

time = getTimer();
for(var i:int=0; i<_len; i++)
{
_arr5.push(1);
}
traceTime("push", time);

time = getTimer();
_arr4.forEach(arrFunction3);
function arrFunction3(item:Number, index:int, arr:Vector.<Number>):void
{
arr[index] = 1;
}
traceTime("内联:", time);

time = getTimer();
_arr2.forEach(arrFunction1);
traceTime("item", time);

time = getTimer();
_arr3.forEach(arrFunction2);
traceTime("index", time);

var len1:int = _arr1.length;
time = getTimer();
for(var j:int=0; j<len1; j++)
{
_arr1[j] = 1;
}
traceTime("i=", time);

}

private function arrFunction1(item:Number, index:int, arr:Vector.<Number>):void
{
arr[index] = 1;
}

private function arrFunction2(item:Number, index:int, arr:Vector.<Number>):void
{
arr[index] = 1;
}

private function traceTime(name:String, start:int):void
{
trace(name, getTimer() - start);
}
}


比较效率后,发现还是最原始的 for(var i=0; i<len; i++)效率最高……
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: