Сравнение класса Vector с классом Array

По возможности используйте класс Vector вместо класса Array.

Класс Vector обеспечивает более быстрый доступ для чтения и записи, чем класс Array.

Простой тест показывает преимущества класса Vector над классом Array. С помощью следующего кода показано тестирование класса 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 

С помощью следующего кода показано тестирование класса 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 

Можно еще больше оптимизировать пример за счет назначения определенной длины вектору и настройки для него фиксированной длины:

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

Если размер вектора изначально не задан, он увеличивается, когда вектор выходит за текущие границы. Каждый раз при увеличении вектора ему выделяется новый блок памяти. Текущее содержимое вектора копируется в новый блок памяти. Дополнительные операции копирования и выделения памяти отражаются на производительности. Код, представленный выше, оптимизирован для лучшей производительности за счет указания исходного размера вектора. Однако он не оптимизирован для целей поддержки. Для этих целей сохраните часто используемое значение в качестве константы.

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

По возможности пользуйтесь API-интерфейсами объектов Vector, так как они работают быстрее.