Vectorklasse versus Arrayklasse

Gebruik indien mogelijk de Vectorklasse in plaats van de Arrayklasse.

Met de Vectorklasse is snellere lees- en schrijftoegang mogelijk dan met de Arrayklasse.

Een eenvoudige standaard omschrijft de voordelen van de Vectorklasse in vergelijking met de Arrayklasse. In de volgende code wordt een standaard voor de Arrayklasse weergegeven.

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 

In de volgende code wordt een standaard voor de Vectorklasse weergegeven.

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 

Het voorbeeld kan verder worden geoptimaliseerd door een specifieke lengte aan de vector toe te wijzen en deze lengte vast te leggen.

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

Als de grootte van de vector niet van tevoren is opgegeven, neemt de grootte toe wanneer de vector over onvoldoende ruimte beschikt. Steeds wanneer de grootte van de vector toeneemt, wordt een nieuwe geheugenblok toegewezen. De huidige inhoud van de vector wordt naar het nieuwe geheugenblok gekopieerd. De extra geheugentoewijzing en het kopiëren van de gegevens heeft negatieve gevolgen voor de prestaties. Bovenstaande code is geoptimaliseerd doordat de aanvankelijke grootte van de vector is opgegeven. De code is echter niet geoptimaliseerd vanuit het oogpunt van onderhoudsgemak. Als u dat ook wilt verbeteren, slaat u de opnieuw gebruikte waarde op in een constante waarde:

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

Probeer, voor zover mogelijk, de vectorobject-API's te gebruiken, aangezien die sneller uitgevoerd worden.