2012-03-21 20 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