程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> Delphi語言優化

Delphi語言優化

編輯:Delphi

  1)記錄或數組類型的返回值
  C++程序員不會這樣做,因為返回值會被壓入堆棧,導致時間效率和空間效率都降低。Delphi無此問題,返回值相當於Out參數,由調用者傳遞內存單元指針。所以可以使用記錄或數組返回值,以增將可讀性和書寫表達式的方便性。

  2)公共表達式
  Delphi只在一個語句行內提取公共表達式。如果公共表達式包含函數調用或屬性訪問,則不被提取,即要重復計算,因為提取可能導致改變語義。

  3)const參數
  當函數參量不被改變時,如果參量長度超過4字節或是接口、字符串、動態數組類型,使用const參數,可以使編譯器以地址方式傳遞,並且不對引用技術做修改。

  4)緊縮
  Delphi分配存儲單元時會分配盡量小的空間。如果足夠小且可放入寄存器內,則一般會使用寄存器直接操作。例如長度為4字節的記錄或數祖賦值時,編譯器會自動按DWord用32位寄存器處理。

  5)算符
  整除2或4會優化成右移位,乘2或4會優化成左移位,所以不需特意用移位運算,可以寫出更可讀的代碼。但乘除8和其他2的倍數不會有此優化。
  i := i + 1; 和 Inc(i); 一般產生的代碼相同。

  6)浮點
  Delphi不對浮點計算做優化,即使加零運算也不會被優化掉,而且會添加很多FWAIT指令。所以寫關鍵的浮點運算時要自己優化好表達式,自己提取公共表達式。盡量少用中間變量,因為浮點變量不會被優化掉,即使後面沒有使用也會寫回內存。必要時用匯編,或者考慮用C。雖然如此,一般情況下,等價的Delphi和C的浮點程序性能差別不大。

  7)with語句
  with可以生成隱式中間變量,避免重復計算

  8)集合
  i in [0..31] 比 (i >= 0) and (i <= 31) 快

  9)位寬
  在不使用緊縮時,用integer和cardinal,因為字節對齊時SmallInt, ShortInt, Byte等也會占用4或8字節,計算時仍為32位,而且要先擴展到32位。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved