Delphi强力优化

Delphi强力优化

    nightmare(qingrui li)

**关于记录类型的返回值
C++程序员不会这样做,因为返回值会被压入堆栈,导致时间效率和空间效率都降低。但Delphi无此问题。一般情况下,记录类型返回值会像Out参数一样传递引用(在EAX寄存器中)。

**公共表达式
Delphi只在一个语句行内提取公共表达式。如果公共表达式包含函数调用,则不会被提取,因为可能改变语义。如果确保函数返回值相同,应预先计算。

**类属性
每次引用属性时都会使属性重新计算,即使属性是直接映射到域。频繁调用属性时应预先计算。

**循环内的重复计算表达式外提
C++程序员可能会让编译器做此优化,但Delphi一般不会这么做。最安全且最有效的优化应由程序员来完成。

**使用const参数
当函数参量不被改变时,如果参量长度超过4字节或是接口、字符串、动态数组类型,使用const参数,可以使编译器尽可能的以地址方式用寄存器传递。

**长度为4字节的记录或数祖赋值时,编译器会自动按DWORD用32位寄存器处理

**记录数组的元素长度是偶数的话,可以生成更快的数组访问代码

**整除2或4会优化成右移位,乘2或4会优化成左移位,所以不需特意用移位运算,可以写出更可读的代码

**如果你在写大量浮点运算的程序,记住,Delphi不对浮点计算做优化。手工优化,必要时用汇编,或者考虑用C(不是C++)。

**with语句
with语句不止是源代码上的简洁,而且生成更快更短的代码。

**Delphi 6 的Alignment
Delphi 6 缺省按8字节对齐变量边界,在工程选项里将其改成4字节可以使生成的应用程序更短小。

**不要为Delphi里没有宏而抱怨
参数较少的函数,调用时只耗1到2个时钟周期(register调用协议的优势),因为没有参数压栈的开销。

你可能感兴趣的:(C++,c,C#,Delphi)