Vector クラスと Array クラス

可能な場合は、Array クラスの代わりに Vector クラスを使用してください。

Vector クラスを使用すると、Array クラスよりも高速な読み込みおよび書き込みアクセスが可能です。

単純なベンチマークによって、Array クラスに対する Vector クラスの優位性が示されます。次のコードは 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 

この例はさらに最適化できます。それには、Vector に特定の長さを割り当て、その長さを固定値に設定します。

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

Vector のサイズが時間よりも先に指定されない場合、Vector の容量が不足すると、サイズが増えます。Vector のサイズが増えるたびに、メモリの新しいブロックが割り当てられます。Vector の最新の内容がメモリの新しいブロックにコピーされます。データを余分に割り当てて複製することにより、パフォーマンスに影響があります。上述のコードでは、Vector の初期サイズを指定することでパフォーマンスが最適化されています。ただし、コードの保守性は最適化されていません。保守性も改善するには、再利用された値を定数に保存します。

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

可能な場合は、Vector オブジェクト API を使用します。これにより、実行速度が高まる可能性があります。