AS3数组"为每个... in"性能与for循环,并按顺序保证?

Sen*_*mes 0 flash actionscript-3

这个问题实际上是双重的:

  1. for each循环数组如何for通过其元素的简单循环进行性能比较?

  2. 循环中是否保证循环?以下代码表示是:

var sample_array:Array = [];
for (var i:uint = 0; i < 10000; i++) sample_array.push(i);
i = 0;
for each(var value:uint in sample_array) {
  sample_array[i++] = value;
}

trace('in order was:', check_in_order(sample_array));

function check_in_order(array:Array):Boolean
{
  for (var i:uint = 0, l:uint = array.length; i < l; ++i) {
    if (array[i] != i) return false;
  }

  return true;
}
Run Code Online (Sandbox Code Playgroud)

但是我听到其他(高级)工程师发誓说,遍历并不总是按升序进行!这是真的?

Fer*_*qua 5

这表现在杰克逊邓斯坦,谁进行比较for,for eachfor in用不同的集合(数组,矢量等),性能排名(从最快到最慢):

  1. for
  2. for each
  3. for in (非常慢)

在所有情况下for都是最快的.特别是当与数组或向量一起使用时,for具有压倒性的性能.这些是所有集合的数字(更小意味着更快):

由Jackson Dunstan控制的Loop Speed Redux