Si es posible, utilice la clase Vector en lugar de la clase Array.
La clase Vector permite un acceso más rápido de lectura y escritura que la clase Array.
Una sencilla prueba comparativa muestra las ventajas de clase Vector respecto de la clase Array. El siguiente código muestra una prueba comparativa para la clase Array:
var coordinates:Array = new Array();
var started:Number = getTimer();
for (var i:int = 0; i< 300000; i++)
{
coordinates[i] = Math.random()*1024;
}
trace(getTimer() - started);
// output: 107
El siguiente código muestra una prueba comparativa para la clase Vector:
var coordinates:Vector.<Number> = new Vector.<Number>();
var started:Number = getTimer();
for (var i:int = 0; i< 300000; i++)
{
coordinates[i] = Math.random()*1024;
}
trace(getTimer() - started);
// output: 72
El ejemplo se puede optimizar con un mayor nivel asignando una longitud específica al vector y estableciendo su longitud como fija:
// Specify a fixed length and initialize its length
var coordinates:Vector.<Number> = new Vector.<Number>(300000, true);
var started:Number = getTimer();
for (var i:int = 0; i< 300000; i++)
{
coordinates[i] = Math.random()*1024;
}
trace(getTimer() - started);
// output: 48
Si el tamaño del vector no se especifica con antelación, el tamaño aumenta cuando el vector se ejecuta sin espacio. Cada vez que aumenta el tamaño del vector, se asigna un nuevo bloque de memoria. El contenido actual del vector se copia en el nuevo bloque de memoria. Esa asignación adicional y copia de datos daña el rendimiento. El código anterior se optimiza para el rendimiento especificando el tamaño inicial del vector. Sin embargo, el código no se optimiza para el mantenimiento. Para mejorar también el mantenimiento, almacene el valor reutilizado en una constante:
// Store the reused value to maintain code easily
const MAX_NUM:int = 300000;
var coordinates:Vector.<Number> = new Vector.<Number>(MAX_NUM, true);
var started:Number = getTimer();
for (var i:int = 0; i< MAX_NUM; i++)
{
coordinates[i] = Math.random()*1024;
}
trace(getTimer() - started);
// output: 47
Intente utilizar las API del objeto Vector, si es posible, ya que es probable que se ejecuten con más rapidez.