2011-06-16 30 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