您的位置:首页 > 编程语言 > Delphi

初学 Delphi 嵌入汇编[28] - 把 EAX 的值置为 0 的三种方法与效率

2008-01-30 11:18 447 查看
//以下三个函数功能一样, 但效率不同

{Fun1 需要读取常数 0, 最慢}
function Fun1: Integer;
asm
mov eax, 0
end;

{Fun2 与 Fun3 只是操作 CPU 的寄存器, 比 Fun1 快}
function Fun2: Integer;
asm
sub eax, eax
end;

{Fun3 最快}
function Fun3: Integer;
asm
xor eax, eax
end;

//速度测试
procedure TForm1.Button1Click(Sender: TObject);
var
t: Cardinal;
i: Integer;
begin
t := GetTickCount;
for i := 0 to 100000000 do Fun1;
t := GetTickCount - t;
ShowMessage(IntToStr(t)); {均: 600 多}

t := GetTickCount;
for i := 0 to 100000000 do Fun2;
t := GetTickCount - t;
ShowMessage(IntToStr(t)); {均: 500 多}

t := GetTickCount;
for i := 0 to 100000000 do Fun3;
t := GetTickCount - t;
ShowMessage(IntToStr(t)); {均: 400 多}
end;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: