为什么ArrayCollection.addItem比Flex中的Array.push慢?

时间:2013-01-10 12:59:04

标签: flex

我有一个代码将一堆对象添加到ArrayCollection中(使用ArrayCollection.addItem())。最初我没有发现此代码的响应时间有太大差异。

但是随着添加到ArrayCollection中的对象数量的增加,例程需要更长的时间来响应。

我不得不删除ArrayCollection并使用Array,而是将(Array.push())元素推送到数组中。

我无法理解为什么会这样。有什么不同?有人能说出来吗?

1 个答案:

答案 0 :(得分:1)

在处理多件物品时,这让我很困惑。 RIAstar已经触及了这个问题:Array是一个原始的,就像int是一个原始的。 ArrayCollection是一个可实例化的类,作为flex框架的一部分,具有更多功能。因为它是一个类,所以随着它的数据变大,它会变慢,因为ArrayCollection的所有类扩展都需要开销和处理。

ArrayCollection的主要补充是你可以add events给他们,你不能在数组上。例如,当您添加,更改或删除ArrayCollection中的项时,它将调度您通过addEventListener函数添加的任何事件。

此外,ArrayCollection还有更多有用的项目管理功能,如filteringsorting,以及在集合中的位置添加,获取和删除项目,而不是注册索引。

在Array和ArrayCollection之间进行选择是您的编码/应用程序优先级所在的问题:您是否需要性能/您是否有许多项目? - >数组也许就是你要找的。您是否需要短/快速编码,更容易与flex对象集成? - > ArrayCollection可能是最佳选择。

进一步阅读

Some Differences explained

ArrayCollection Reference

The filter function in action