[阅读: 425] 2007-03-15 13:12:12
在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
( 踩)→┃你┃ ←(死 )
\ ( →┃√┃ ← ) /
\_)↗┗━┛ ↖(_/
