Vector 类和 Array 类

/*尽可能使用 Vector 类而不是 Array 类。 
Flash Player 10 引入了 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 尽可能尝试使用 Vector 对象 API,因为它们的运行速度可能更快。
posted on 2011-03-22 14:24  602147629  阅读(365)  评论(0编辑  收藏  举报