博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Delphi语言优化 (转)
阅读量:2502 次
发布时间:2019-05-11

本文共 966 字,大约阅读时间需要 3 分钟。

Delphi语言优化 (转)[@more@]

语言

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/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10748419/viewspace-1000229/

你可能感兴趣的文章
mcast_set_if函数
查看>>
C-RAN 集中化、协作化、云化、绿色节能(4C)
查看>>
统计抽样
查看>>
apche配置后报错(Forbidden)没有权限
查看>>
Linux 利器- Python 脚本编程入门(一)
查看>>
等保基础知识
查看>>
链表(2)
查看>>
实验四
查看>>
P1341 无序字母对(欧拉回路)
查看>>
UOJ #349. 【WC2018】即时战略
查看>>
15天玩转redis —— 第十篇 对快照模式的深入分析
查看>>
理解MapReduce计算构架
查看>>
【BZOJ 3473】 字符串 (后缀数组+RMQ+二分 | 广义SAM)
查看>>
jQuery渐隐渐出的文字提示
查看>>
异常记录处理
查看>>
如何定位到append的当前位置,不用拉滚动条scrollIntoView方法
查看>>
我的第一篇Window Live Writer日志
查看>>
MySQL编码、Spring配置中编码、Struts中文问题
查看>>
Controller中使用过滤器
查看>>
Anaconda+django写出第一个web app(八)
查看>>