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调用协议的优势),因为没有参数压栈的开销。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值