2012-03-21 21 views

回答

5

甚至更​​快是mycollection.source = [];(相對於mycollection.source = new Array()

另一種選擇是使用鏈表和對象池。對象池允許對象重寫其屬性,而不是刪除對象並創建新對象。如果你把它們放在一個鏈表中而不是一個數組中,循環它們會快得多。所以,如果你只是想循環一堆對象,去鏈接列表,但如果你需要做任何排序,那麼數組和向量會更快。

另一個問題是內存使用。不僅僅是爲了讓應用程序運行內存更小,而且您聲明的對象越多,垃圾收集器在清理時就必須執行的工作越多。

5

Here's an interesting blog post關於清理ArrayList/ArrayCollection的優化。顯然,設置mycollection.source = new Array()的速度明顯快於大數據集的mycollection.removeAll(),因爲removeAll可確保刪除所有事件偵聽器。在這種情況下,最有可能的新ArrayList會擊敗ArrayList.removeAll(),但新的源數組可能是更好的選擇,因爲它應該對綁定/偵聽器的影響較小。

+0

有趣。我的數據集實際上很小(大多數<30,只有大約100個項目中的一個)。我想它歸結爲基準(現在三,感謝!!)選項,看看會發生什麼。 – AlBirdie 2012-03-21 15:13:18