向量.<> vs 数组
Posted
技术标签:
【中文标题】向量.<> vs 数组【英文标题】:Vector.<> vs array 【发布时间】:2010-11-10 22:43:04 【问题描述】:使用Vector.<>
而不是array
的优缺点是什么?
【问题讨论】:
附带说明,这应该标记为 flex4 flashplayer10。 【参考方案1】:来自adobe documentation page:
由于其限制,与元素都是单个类的实例的 Array 实例相比,Vector 有两个主要优点:
性能:使用 Vector 实例时数组元素访问和迭代比使用 Array 时快得多。 类型安全:在严格模式下,编译器可以识别数据类型错误,例如将不正确数据类型的值分配给 Vector 或在从 Vector 读取值时期望错误的数据类型。但是请注意, 当使用 push() 方法或 unshift() 方法向 Vector 添加值时,不会在编译时检查参数的数据类型,而是在运行时检查。【讨论】:
谢谢阿诺!这些只是优点,还有一些反面吗?关于 Vector 更好的性能:有些人报告相反:见 impossiblearts.com/blog/2008/06/18/fp10-vector-vs-array/… 和 bugs.adobe.com/jira/browse/FP-1802 现在看起来性能可能不是向量的最佳卖点。再说一次,人们应该已经习惯了这样一个事实,即 Flex 框架 sdks 和 flash 播放器都远非无缺陷。 在我看来,大反派是非常新的,所以有点小车,并不是每个人都有 FP10。在迈克钱伯斯的这个测试中:mikechambers.com/blog/2008/08/19/… 在他的测试中这两个数字之间的差异并不大。如果您的应用程序没有大量挂在大列表上,我会选择 Array。【参考方案2】:Pro:Vector 比 Array 快 - 例如看到这个:Faster JPEG Encoding with Flash Player 10
相反:Vector 需要 FP10,据 http://riastats.com/ 称,大约 20% 的用户仍在使用 FP9
【讨论】:
在发表此评论时,未检测到的版本 + flash 9 时钟在 4%【参考方案3】:根据 Flash 播放器渗透率网站,它要高一些。大约 85%
This is the source
【讨论】:
【参考方案4】:向量更快。虽然对于顺序迭代the fastest thing seems to be linked-lists。
矢量也可用于位图操作(查看 BitmapData.setVector,也可查看 BitmapData.lock 和解锁)。
【讨论】:
【参考方案5】:之前在 cmets 中提到的链表示例写错了,虽然它跳过了奇数节点,因此只迭代了一半的相同数据。难怪他得到了如此出色的结果,使用正确的代码也可能更快,但不同的百分比差异。循环设置 current = current.next 一次太多(在循环中和作为循环条件)每次迭代都会导致该行为。
【讨论】:
以上是关于向量.<> vs 数组的主要内容,如果未能解决你的问题,请参考以下文章