flash – AS3矢量数组
将数组存储在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.< int>比int的数组快60%,但是Vector的所有派生.< Object>不仅速度相等(即Vector.< Object>执行与Vector相同.< String>,它们也比Array慢约20%.我已经对它进行了两次和三次检查,所以我相信结果相当准确. 数字类型向量仍然更快,因此您应该使用这些向量而不是数组.但: 结束编辑 只有当你要使用sort(),sortOn()或Array的任何其他方便的排序函数时,你仍然可能会另有决定,因为这些是本机函数,因此非常快.在Vector上实现自己的排序方法可能与它们的速度不匹配. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |