flash - AS3 数组向量

标签 flash actionscript-3

将数组存储在数组类型的向量中是否有任何性能优势?

例如选项 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)。一种是针对对象类型的。最后一个充当包罗万象的角色,包含从 Object 派生的所有类。这就是为什么我假设 Vector.<Object>还是比Array快,依赖the information regarding vectors and arrays available from Adobe .

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

  1. 同时Vector.<AnyClassDerivedFromObject>允许严格类型化,这种类型信息仅在编译时评估(因此您可以获得更多类型安全性),而不是在运行时评估 - 因此本质上严格类型化对象向量的好处并不适用于性能。请参阅this blog post了解更多信息。

  2. 因此,唯一比 Array 更快的 Vector 实现是数字类型 (!)。

事实上,我对此做了一些广泛的测试,并得出结论:虽然 Vector.<int>Vector.<Object> 的所有派生的整数数组快 60%不仅速度相同(即 Vector.<Object>Vector.<String> 执行相同,它们还比 Array大约 20%。我对此进行了双重和三重检查,所以我相信结果相当准确。

数字类型向量确实更快,因此您应该使用它们来获得比数组更高的性能优势。但是:

结束编辑

仅当您要使用sort()时, sortOn()或者任何其他方便的 Array 排序函数,您可能仍然会做出其他决定,因为这些是 native 函数,因此非常很快。在 Vector 上实现您自己的排序方法可能无法匹配它们的速度。

关于flash - AS3 数组向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8551527/

相关文章:

flash - : a Timer, EnterFrame 事件或带有额外代码的基本补间动画哪个更有效?

html - css 菜单不覆盖在 flash 上,仅限 Internet Explorer

flash - 使用 Selenium 和 Webdriver 截取 flash 对象的屏幕截图

sql - Adobe Air数据库

actionscript-3 - ActionScript 中的弱引用添加的事件监听器出现问题

iphone - 可以在另一个 iOS 应用程序中加载一个 iOS 应用程序(通过应用程序内购买/订阅)吗?

actionscript-3 - 为使用 SWC 的项目生成 ASDoc

actionscript-3 - Adobe Air-检测连接是WIFI,3G还是EDGE

actionscript-3 - 在这个简单的例子中,如何思考 "Tell, don' t ask”?

flash - 设置动态文本字段时,链接的 SWC/源中的 AS3 嵌入字体空白