Flash Player 10 introduce la clase Vector, la cual permite un acceso de lectura y escritura más rápido que el de la clase Array.
Una simple prueba nos mostrará los beneficios de la clase Vector sobre la clase Array, el siguiente código será usado para probar la clase Array:
El siguiente código será usado para probar la clase Vector:
El ejemplo anterior puede optimizarse asignando un tamaño fijo al Vector:
La clase final que se usará para realizar las 3 pruebas será la siguiente:
package { import flash.display.Sprite; import flash.events.Event; import flash.utils.getTimer; public class Main extends Sprite { private const MAX_VALUE:int = 9999999; public function Main():void { if (stage) init(); else addEventListener(Event.ADDED_TO_STAGE, init); } private function init(e:Event = null):void { removeEventListener(Event.ADDED_TO_STAGE, init); // entry point this.testArray(); this.testVector(); this.testVectorFixed(); } private function testArray():void { var inicio:int = getTimer(); var arrTest:Array = new Array(); for (var i:int = 0; i < this.MAX_VALUE; i++) { arrTest[i] = i; } trace('>>> tiempo Array: ', getTimer() - inicio); } private function testVector():void { var inicio:int = getTimer(); var vecTest:Vector.<int> = new Vector.<int>(); for (var i:int = 0; i < this.MAX_VALUE; i++) { vecTest[i] = i; } trace('>>> tiempo Vector: ', getTimer() - inicio); } private function testVectorFixed():void { var inicio:int = getTimer(); var vecFixed:Vector.<int> = new Vector.<int>(this.MAX_VALUE, true) for (var i:int = 0; i < this.MAX_VALUE; i++) { vecFixed[i] = i; } trace('>>> tiempo Vector Fixed: ', getTimer() - inicio); } } }
Y los resultados obtenidos fueron:
>>> tiempo Array: 959 >>> tiempo Vector: 401 >>> tiempo Vector Fixed: 154
Como se puede apreciar, existe una gran diferencia entre cada uno de los métodos usados. Adobe en su sitio de rendimiento de la plataforma Flash, recomienda siempre que sea posible usar la clase Vector antes que Array.
