Vector-klassen och Array-klassen

När det är möjligt ska du välja Vector-klassen i stället för Array-klassen.

Vector-klassen ger snabbare skriv- och läsåtkomst än Array-klassen.

Ett enkelt test visar fördelarna med Vector-klassen framför Array-klassen. I följande exempelkod visas en test för Array-klassen:

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 

I följande exempelkod visas en test för Vector-klassen:

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 

Detta exempel kan optimeras ytterligare genom att du anger en längd för vektorn och att den ska vara fast:

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

Om storleken på vektorn inte anges i förväg, kommer storleken att öka när utrymmet för vektorn tar slut. För varje gång som storleken på verktorn ökar tilldelas nya minnesblock. Det aktuella vektorinnehållet kopieras till det nya minnesblocket. Den här extra allokeringen och kopieringen av data påverkar prestandan negativt. Koden här ovan är prestandaoptimerad eftersom den inledande vektorstorleken är angiven. Däremot är koden inte optimerad för underhåll. Du underlättar underhållet genom att spara det återanvända värdet i en konstant som i exemplet här:

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

Försök när det är möjligt att använda API:er för vektorobjektet eftersom de troligtvis hanteras snabbare.