2015年1月31日 星期六

LOCO FOOD 超好吃蛋餅

這不是甚麼網誌文,
單純我想記錄而已。


只點了漢堡蛋餅和奶茶而已,
奶茶很普通竟然要30塊!
漢堡好吃但也普普,
唯一心動的就是蛋餅,
加了點它們的辣椒更好吃。
好想再吃可是桃園怎麼沒有!

2015年1月22日 星期四

Vector 類別與 Array 類別的比較


如果可能,請盡量使用 Vector 類別,而非 Array 類別。(跟c++差好多)

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,因為其執行速度較快。