中国开发网: 论坛: 程序员情感CBD: 贴子 484771
amo
哪段代码在p6以后的cpu中运行效率高
在Delphi 2006InRange是这样写的。

[code=php] function InRange(const AValue, AMin, AMax: Integer): Boolean; begin Result := (AValue >= AMin) and (AValue <= AMax); end; [/code]
对应的汇编代码如下:
[code=java] 0044E3A4 3BD0 cmp edx, eax 0044E3A6 7F04 jnle 0044E3AC 0044E3A8 3BC8 cmp ecx, eax 0044E3AA 7D03 jnl 0044E3AF 0044E3AC 33C0 xor eax, eax 0044E3AE C3 ret 0044E3AF B001 mov al, $01 0044E3B1 C3 ret [/code]


在Delphi2007中却写成了这样

[code=php] function InRange(const AValue, AMin, AMax: Integer): Boolean; var A, B: Boolean; begin A := (AValue >= AMin); B := (AValue <= AMax); Result := B and A; end; [/code]
对应的汇编代码如下:
[code=java] 0044E3CC 3BD0 cmp edx, eax 0044E3CE 0F9EC2 setle dl 0044E3D1 3BC8 cmp ecx, eax 0044E3D3 0F9DC0 setnl al 0044E3D6 22C2 and al, dl 0044E3D8 C3 ret [/code]

相比之下哪种代码cpu执行效率更高?
oooO ↘┏━┓ ↙ Oooo
( 踩)→┃你┃ ←(死 )
\ ( →┃√┃ ← ) /
  \_)↗┗━┛ ↖(_/


相关信息:


欢迎光临本社区,您还没有登录,不能发贴子。请在 这里登录