Classe Vector x classe Array

Use a classe Vector em vez da classe Array, sempre que possível.

A classe Vector permite acesso mais rápido para leitura e gravação do que a classe Array.

Um simples benchmark mostra os benefícios da classe Vector em relação à classe Array. O código a seguir mostra um benchmark da classe 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 

O código a seguir mostra um benchmark da classe 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 

O exemplo pode ser otimizado ainda mais por meio da atribuição de um comprimento específico ao vetor e da configuração de seu comprimento como fixo:

// 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 

Caso o tamanho do vetor não seja definido antes, o tamanho aumenta quando o vetor estiver sem espaço. Cada vez que o tamanho do vetor aumenta, um novo bloco de memória é alocado. O conteúdo atual do vetor é copiado para o novo bloco de memória. Esta alocação e cópia extra de dados diminuem o desempenho. O código acima é otimizado ao especificar o tamanho inicial do vetor. No entanto, o código não está otimizado para manutenção. Para otimizar a mantenabilidade também, guarde o valor reutilizado em uma 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 

Utilize as APIs de objeto Vector, sempre que possível, já que elas costumam ser executadas mais rapidamente.