2010年11月23日 星期二

巨集與函數





巨集與函數的功能相同,
但在編譯時,
編譯時會以巨集取代原來的敘述,
而函數則是一個跳躍敘述;
在程式執行期間,
由於巨集已經展開為它所代表的敘述,
程式會一行一行執行下去,
而碰到函數則是跳到函數定義的副程式去執行。
所以,
如果將子功能以巨集撰寫,
執行速度較快,
但編譯後的程式碼較大;
函數寫法則執行速度較慢,
但是執行檔較小,
如何取捨完全看程式設計的目的與需求。


巨集 (macro)
  優點:執行速度快,沒有堆疊的 push 和 pop 動作的需要,減少時間的耗損。
  缺點:巨集被呼叫多次以後,會耗損存放及使用大量的記憶體空間。


函數 (call function/call subroutine)
  優點:即使函數被呼叫多次,在記憶體中仍只有一份實體,較節省記憶體空間。
            能節省存放及使用的記憶體空間。
  缺點:執行速度較慢,需花費時間在堆疊的 push 和 pop 動作上。




資料來源