实际上更快?只需创建一个新的ArrayList / ArrayCollection或重用现有的ArrayList / ArrayCollection并删除它的元素?
我正在为性能始终存在问题的手机开发,所以我采用最快的方法。
答案 0 :(得分:5)
Here's an interesting blog post关于清除ArrayList / ArrayCollection的优化。显然,设置mycollection.source = new Array()
比使用大型数据集的mycollection.removeAll()
快得多,因为removeAll可确保删除所有事件侦听器。
在这种情况下,很可能新的ArrayList会击败ArrayList.removeAll(),但新的源数组可能是更好的选择,因为它对绑定/侦听器的影响应该更小。
答案 1 :(得分:5)
更快mycollection.source = [];
(与mycollection.source = new Array()
相对)
另一种选择是使用链表和对象池。对象池允许对象重写其属性,而不是删除对象并创建新对象。如果然后将它们保存在链表而不是数组中,那么循环它们要快得多。因此,如果您只想循环遍历一堆对象,请使用链接列表,但如果您需要进行任何排序,那么数组和向量会更快。
另一个问题是内存使用。不仅仅是为了让应用程序运行内存更小,而且声明的对象越多,垃圾收集器在清理时就必须做的工作就越多。