使用Vector.<Object>代替标准数组有什么好处吗?

Mar*_*rty 3 actionscript-3 data-structures

由于无法动态创建向量,我不得不创建一个非常原始的类型,即Object:

var list:Vector.<Object> = new Vector.<Object>();
Run Code Online (Sandbox Code Playgroud)

我假设Vector从尽可能接近的方式获得了它的能力,而不是上面的,但我可能是错的,当使用上面的代替普通的数组或对象时,实际上仍然有收益:

var list:Array = [];
var list:Object = {};
Run Code Online (Sandbox Code Playgroud)

有没有人对此有任何见解?

Jac*_*ter 6

Vector. <Object>与Array相比,你不会获得任何好处,反之亦然.即使你有一个更紧密耦合的矢量,如Vector.<Foo>,底层数据结构也是一样的.如果您使用值类型,唯一的优化收益.原因是Ecmascript仍然是后期绑定,所有引用对象共享相同的引用字节结构.

但是,在Ecmascript 4中(其中Actionscript是一个实现),Vector泛型数据类型添加了对元素访问的边界检查(非向量只会增长数组),因此功能略有不同,因此CPU时钟周期的数量会有所不同一点点.然而,这可以忽略不计.

  • @JonathanDunlap不,这是你错了.当与数字类型一起使用时,向量仅带来性能改进:int,uint和Number.看到这个问题:http://stackoverflow.com/questions/8551527/as3-vector-of-arrays/8551727#8551727 (3认同)