Delphi語言最佳化 (轉)
語言
1)記錄或陣列型別的返回值
C++員不會這樣做,因為返回值會被壓入堆疊,導致時間和空間效率都降低。Delphi無此問題,返回值相當於Out引數,由者傳遞單元指標。所以可以使用記錄或陣列返回值,以增將可讀性和書寫的方便性。
2)公共表示式
Delphi只在一個語句行內提取公共表示式。如果公共表示式包含呼叫或屬性訪問,則不被提取,即要重複計算,因為提取可能導致改變語義。
3)const引數
當函式參量不被改變時,如果參量長度超過4位元組或是介面、字串、動態陣列型別,使用const引數,可以使以地址方式傳遞,並且不對引用技術做修改。
4)緊縮
Delphi分配單元時會分配儘量小的空間。如果足夠小且可放入暫存器內,則一般會使用暫存器直接操作。例如長度為4位元組的記錄或數祖賦值時,編譯器會自動按D用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位。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-1000229/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Delphi的程式語言Object Pascal(1)Object
- Delphi 程式碼最佳化——字串篇 (轉)字串
- Delphi程式碼最佳化 完結篇 (轉)
- Delphi程式碼最佳化(二) 整數篇 (轉)
- Delphi程式碼最佳化(三) 浮點篇 (轉)
- Java 語言是強型別語言語言(轉)Java型別
- Oracle SQL語言(轉)OracleSQL
- D語言 (科幻 ) (轉)
- SAP OTR語言轉換R語言
- C++語言概述 (轉)C++
- Delphi與Excel (轉)Excel
- C語言---整型字串轉換C語言字串
- SQL語言基本教程(一) (轉)SQL
- SQL語言快速入門(轉)SQL
- c語言函式庫(轉)C語言函式
- 流行語言的比較 (轉)
- Java語言和C++語言的差異 (轉)JavaC++
- 多語言網站 根據使用者語言進行跳轉網站
- 【C語言】聊聊輾轉相除法C語言
- C語言動態呼叫庫(轉)C語言
- C語言連線Oracle (轉載)C語言Oracle
- 各種語言的介紹(轉)
- 組合語言的藝術(轉)組合語言
- c語言字串,數字轉換C語言字串
- ASP實現多語言支援 (轉)
- C 語言程式設計(unix) (轉)程式設計
- 利用JAVA語言深度控制Word(轉)Java
- Oracle PL/SQL語言基礎(轉)OracleSQL
- 基於物件的JavaScript語言(轉)物件JavaScript
- C 語言常見問題(轉)
- 也談.Net中間語言——破解Delphi2CS行數和時間限制
- Delphi物件模型(Part V) (轉)物件模型
- Delphi物件模型(Part IV) (轉)物件模型
- Delphi物件模型(Part VI) (轉)物件模型
- Delphi物件模型(Part II) (轉)物件模型
- Delphi物件模型(Part III) (轉)物件模型
- 很多語言轉換成javaScript,介紹,轉載JavaScript
- [轉]水木社群函數語言程式設計語言版版聚手記函數程式設計