论坛
门户
内部优惠
喜欢
话题
VIP会员
搜索
新浪微博
登录
注册
100%
100%
首页
>
软件开发
>
delphi语言
>
Delphi语言优化
回复
« 返回列表
593249217
总版主
注册日期
2010-11-25
发帖数
385
QQ
593249217
火币
969枚
粉丝
282
关注
1
加关注
写私信
打招呼
阅读:
4505
回复:
0
Delphi语言优化
楼主
#
更多
只看楼主
倒序阅读
发布于:2010-11-26 02:04
保存
100%
100%
[]
1
<p style=line-height: 150%>Delphi语言优化
<p style=line-height: 150%>1)记录或数组类型的返回值
C++程序员不会这样做,因为返回值会被压入堆栈,导致时间效率和空间效率都降低。Delphi无此问题,返回值相当于Out参数,由调用者传递
内存
单元指针。所以可以使用记录或数组返回值,以增将可读性和书写表达式的方便性。
<p style=line-height: 150%>2)公共表达式
Delphi只在一个语句行内提取公共表达式。如果公共表达式包含函数调用或属性访问,则不被提取,即要重复计算,因为提取可能导致改变语义。
<p style=line-height: 150%>3)const参数
当函数参量不被改变时,如果参量长度超过4字节或是接口、字符串、动态数组类型,使用const参数,可以使编译器以地址方式传递,并且不对引用
技术
做修改。
<p style=line-height: 150%>4)紧缩
Delphi分配存储单元时会分配尽量小的空间。如果足够小且可放入寄存器内,则一般会使用寄存器直接操作。例如长度为4字节的记录或数祖赋值时,编译器会自动按DWORD用32位寄存器处理。
<p style=line-height: 150%>5)算符
整除2或4会优化成右移位,乘2或4会优化成左移位,所以不需特意用移位运算,可以写出更可读的代码。但乘除8和其他2的倍数不会有此优化。
i := i + 1; 和 Inc(i); 一般产生的代码相同。
<p style=line-height: 150%>6)浮点
Delphi不对浮点计算做优化,即使加零运算也不会被优化掉,而且会添加很多FWAIT指令。所以写关键的浮点运算时要自己优化好表达式,自己提取公共表达式。尽量少用中间变量,因为浮点变量不会被优化掉,即使后面没有使用也会写回内存。必要时用汇编,或者考虑用C。虽然如此,一般情况下,等价的Delphi和C的浮点程序性能差别不大。
<p style=line-height: 150%>7)with语句
with可以生成隐式中间变量,避免重复计算
<p style=line-height: 150%>8)集合
i in [0..31] 比 (i >= 0) and (i <= 31) 快
<p style=line-height: 150%>9)位宽
在不使用紧缩时,用integer和cardinal,因为字节对齐时SmallInt, ShortInt, Byte等也会占用4或8字节,计算时仍为32位,而且要先扩展到32位。
喜欢
0
评分
0
最新喜欢:
多一分钟时间学习,就多一份技术!
回复
100%
发帖
回复
« 返回列表
普通帖
您需要登录后才可以回帖,
登录
或者
注册
100%
返回顶部
关闭
最新喜欢