Arrays AS3:for循环和forEach()数组函数哪个更快?

Arrays AS3:for循环和forEach()数组函数哪个更快?,arrays,actionscript-3,loops,Arrays,Actionscript 3,Loops,我想知道AS3中哪个更快: array.forEach( function(v:Object, ...args):void { ... } ); 或 var l:int=array.length; 对于(vari:int=0;i

我想知道AS3中哪个更快:

array.forEach( function(v:Object, ...args):void
{ ... } );

var l:int=array.length;
对于(vari:int=0;i

希望这能帮助您理解for和for循环之间的区别。

for i:)

var数组:数组=[];
对于(变量i:int=0;i<100000;i++)
{
数组[i]=i;
}
变量时间:uint=getTimer();
forEach(函数(v:Object,…args):void
{v=1;});
跟踪(getTimer()-time)//痕迹85
时间=getTimer();
var l:int=array.length;
对于(i=0;i
上述答案没有考虑到您将主要对循环中的数组元素执行操作

此代码

import flash.utils.getTimer;

var a:Array=[];
var time:int=0;

for(var i:int=0; i<10000; i++) {
    a.push(new Date());
}

time=getTimer();
for(var j:int=0; j<a.length; j++) {
    var dt:Date=a[j];
    dt.valueOf();
}
trace("for: " , getTimer()-time);

time=getTimer();
for each(var xt:Date in a) {
    xt.valueOf();
}
trace("for each: " , getTimer()-time);

time=getTimer();
a.forEach(nothing);
trace("a.forEach: " , getTimer()-time);

function nothing(d:Date, ...args):void {
    d.valueOf();
}
对于100000个值,结果更为明显

for:  27
for each:  17
a.forEach:  138
总冠军:每一圈的冠军

for each(var d:myClass in myCollection) {
    //myCode
}
var时间:uint;
变量向量:向量新向量。;
对于(变量b:int=0;b<1000000;b++)
{
vec[b]=99;
}
///
时间=getTimer();
对于(变量i:int=0;i=0;--j)
{
vec[j]=3;
}
跟踪('for i rev:'+(getTimer()-time)+'ms');
///
时间=getTimer();
for(变量k:vec中的整数)
{
vec[k]=4;
}
跟踪('for:'+(getTimer()-time)+'ms');
///
时间=getTimer();
对于每个(变量o:vec中的编号)
{
o=5;
}
跟踪('for each:'+(getTimer()-time)+'ms');
///
时间=getTimer();
向量forEach(函数(v:int,…args):void
{
v=6;
}
);
trace('forEach:'+(getTimer()-time)+'ms');
//对于i:81毫秒
//对于i版本:79ms
//适用时间:28毫秒
//每次:33毫秒
//forEach:530ms

很好,你花时间回答了!你能编辑你的答案,包括你为什么张贴它的解释吗?这个问题已经有了公认的答案。amoebe,adobe会不时对as3虚拟机的性能进行更改,以便上述信息不再相关。这个解释听起来不错吗?你不必为自己辩护,我只是想帮助你创造更好的答案。感谢您的贡献:)这个问题是关于
Array.forEach()
for
的问题。您提到的问题是关于每个
for:  3
for each:  2
a.forEach:  13
for:  27
for each:  17
a.forEach:  138
for each(var d:myClass in myCollection) {
    //myCode
}
        var time:uint;
        var vec:Vector.<Number> = new Vector.<Number>;
        for (var b:int=0; b < 1000000; b++)
        {
            vec[b] = 99;
        }

        ///

        time = getTimer();
        for (var i:int = 0; i < vec.length; i++ )
        {
            vec[i] = 2;
        }
        trace('for i: '+(getTimer()-time)+'ms');

        ///

        time = getTimer();          
        for (var j:int = vec.length - 1; j >= 0; --j) 
        {
            vec[j] = 3;
        }
        trace('for i rev: '+(getTimer()-time)+'ms');            

        ///

        time = getTimer();
        for ( var k:int in vec)
        {
            vec[k] = 4;
        }
        trace('for: '+(getTimer()-time)+'ms');          

        ///

        time = getTimer();
        for each(var o:Number in vec)
        {
            o = 5;
        }
        trace('for each: '+(getTimer()-time)+'ms');         

        ///

        time = getTimer();
        vec.forEach( function(v:int, ...args):void
        {
            v = 6;
        }
        );
        trace('forEach: '+(getTimer()-time)+'ms');  

// for i: 81ms
// for i rev: 79ms
// for: 28ms
// for each: 33ms
// forEach: 530ms