加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

flash – AS3矢量数组

发布时间:2020-12-15 07:31:22 所属栏目:百科 来源:网络整理
导读:将数组存储在Array类型的Vector中是否有任何性能优势? 例如选项1 private var _arrays:Vector.Array = new Vector.Array(2); _arrays[0] = new Array(10);_arrays[1] = new Array(10); 选项2 private var _arrays:Array = new Array(2); _arrays[0] = new A
将数组存储在Array类型的Vector中是否有任何性能优势?

例如选项1

private var _arrays:Vector.<Array> =  new Vector.<Array>(2); 
_arrays[0] = new Array(10);
_arrays[1] = new Array(10);

选项2

private var _arrays:Array =  new Array(2); 
_arrays[0] = new Array(10);
_arrays[1] = new Array(10);

我也可以有矢量或矢量吗?

private var _vectors:Vector.<Vector> = new Vector.<Vector>(2);

_vectors[0] = new Vector.<String>(10);
_vectors[1] = new Vector.<String>(10);

谢谢,

标记

解决方法

编辑

我的原始答案是错误的,除了最后一部分,我必须为此道歉.我知道Vector在“引擎盖下”有四个实现. (您可以在Robert Penner here的帖子中找到来自FP 10 playerglobal.swc的反编译源代码)其中三个用于数字类型(int,uint和Number).一个是对象类型.最后一个用作catch-all并接受从Object派生的所有类.这就是为什么我假设Vector.< Object>仍然比Array快,依赖于the information regarding vectors and arrays available from Adobe.

但是,似乎这些信息是错误的,或者至少它遗漏了一些重要的部分:

> Vector.< AnyClassDerivedFromObject>允许严格键入,此类型信息仅在编译时评估(因此您获得更多类型安全性),但不在运行时 – 因此基本上严格键入对象向量的好处不适用于性能.有关详细信息,请参阅this blog post.
>因此,Vector中比Array快的唯一实现是数字类型(!).

事实上,我已经对此进行了一些广泛的测试,并得出结论,虽然Vector.< int>比int的数组快60%,但是Vector的所有派生.< Object>不仅速度相等(即Vector.< Object>执行与Vector相同.< String>,它们也比Array慢约20%.我已经对它进行了两次和三次检查,所以我相信结果相当准确.

数字类型向量仍然更快,因此您应该使用这些向量而不是数组.但:

结束编辑

只有当你要使用sort(),sortOn()或Array的任何其他方便的排序函数时,你仍然可能会另有决定,因为这些是本机函数,因此非常快.在Vector上实现自己的排序方法可能与它们的速度不匹配.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读