2011-06-16 27 views
1

在actionscript 3中清洗数组的速度更快?as3中更快的阵列清洗方法

myArray = []; 

myArray.length = 0; 

,为什么快?存在比这些更好的方法吗? ...

+2

如果你需要经常这样做(它们本身很小),速度差异实际上会变得很明显,你可以做一些非常错误的事情。甚至忽略了这一点,我敢打赌,有十几个地方可以进行更多的优化(如在很多数量级上)。 – delnan 2011-06-16 16:33:01

+1

我猜想第二个选项,因为第一个是实例化。 – RIAstar 2011-06-16 16:34:25

+0

在第一个中,你实际上是在创建一个新的数组并将其分配给myArray变量。在第二个中,您正在重置长度 – divillysausages 2011-06-16 16:39:43

回答

4

我写了下面的测试程序:

var array:Array = []; 
var start:int = getTimer(); 
for (var index:int = 0; index < 10000; index++) 
{ 
    array.push(4); 
    array = []; 
    //array.length = 0; 
} 
var end:int = getTimer(); 
trace (end - start); 

使用。长度= 0报告10毫秒。使用array = []报告21毫秒。显然,做.length = 0要快得多。此外,执行array = []可能会导致更早/更频繁的垃圾回收,因为它可能会执行堆分配。垃圾收集会在稍后减慢应用程序的速度。

.length = 0由于多种原因而获胜。

+0

谢谢,相当清晰的答案。 – tony 2011-06-16 16:50:01