程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 初學Delphi嵌入匯編[28] - 把EAX的值置為0的三種方法與效率

初學Delphi嵌入匯編[28] - 把EAX的值置為0的三種方法與效率

編輯:Delphi

//以下三個函數功能一樣, 但效率不同

{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;

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved