Delphi代码优化(二) 整数篇(2)

2008-04-09 04:30:37来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

简化表达式

过于复杂的表达式会妨碍编译器的自动优化,这时可以考虑引入临时变量来化简表达式,这样可能(!)可以得以优化,更重要的是提高了代码的可读性。

不再畏惧乘法

PII出现以前,乘法运算是相当费时的,以至于当时的经典优化方法便是把一类特殊的乘法转变为移位运算和加法。而今,在作为标准配置的PII上,乘法和多数其它运算一样,只需要一个指令周期即可完成。当然Delphi编译器仍然会把诸如*2之类的运算优化为shl 1,这也不坏,不是吗?

临时子域类型

才揭过子域类型的短,又来说它的妙用:-p 但这也不是真正的子域类型,不过是形式上相似罢了。像以下的语句:

if ((x>=0) and (x=<10)) or ((x>=20) and (x<=30)) then …

可以改写为:

if x in [0..10,20..30] then …

子域数越多,优化效果越明显。不过除了在NOI题目里以外,天下可没有免费馅饼,这回的代价是占用一个临时寄存器。

movzx xor/mov

这是读入小于32位数据的两种不同方法,后者在PII以前更具优势,而前者在PII上因其乱序执行的特性而显得更有效率。编译器对此的取舍规则似乎很复杂,必要时还是自己用嵌入汇编好了。

大整数运算

对付大整数(超过32

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:装扮工具提示条

下一篇:远程控制篇:服务端程序关机时的处理