本文和大家重点讨论一下Flex Array和ArrayCollection的性能比较,array方法少,用起来不方便,从开发方便的角度来看要比ac好,但是效率方面Array优于ArrayCollection。
Flex Array和ArrayCollection的性能比较
一直想,写程序的时候要用Array呢还是ArrayCollection,Flex Array方法少,用起来不方便,从开发方便的角度来看要比ac好,但是效率方面怎么样呢?于是做了一个小程序验证一下。
结论是:Flex Array优于ArrayCollection,从测试结果平均看来,AC的效率是随着object的数目呈线性下降的,Orz,而Array则是体现了优异的效率,在object增加的情况下,基本上没有太大的变化。所以如果在你需要遍历所有元素的情况下(比如说物理引擎,3D引擎等),Array是不错的选择
ArrayCollection(以下简称AC)应该是包装了Array的Wrapper,支持事件机制,你在对ArrayCollection中的对象进行增加删除更新操作时ArrayCollection会产生事件,可以通过collectionchange事件监听,所以在图表开发中都用ArrayCollection做数据源,一旦有更新,就会反映在图标上
既然如此,那么AC的效率肯定要比原生的Flex Array要差的咯。下面的图表验证了这点。
程序会自动往Flex Array和AC里面添加一定数量的Object{test:"hello"},(从零开始,每次递增1或者(总数/10),一直到你的输入的数值)。默认是1000个Object。
图表横轴是添加的Object的数量,纵轴Y是时间。
有兴趣的话,看看源代码
【编辑推荐】
- 解析FlexSDK4的十大变化
- Flex必须了解的那些事
- 在Flex中使用样式的五大方法
- FlexBuilder3.0与Eclipse3.4的完美结合
- Flex ComboBox和Datagrid组件用法指导