初学 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;
相关文章推荐
- 初学 Delphi 嵌入汇编[28] - 把 EAX 的值置为 0 的三种方法与效率
- 初学 Delphi 嵌入汇编[16] - 进制的表示方法
- 初学 Delphi 嵌入汇编[16] - 进制的表示方法
- 初学 Delphi 嵌入汇编[2] - 汇编语言关键字
- 初学 Delphi 嵌入汇编[5] - 寄存器在过程与函数中的使用 - 续
- 初学 Delphi 嵌入汇编[1] - 汇编语言与机器语言
- 初学 Delphi 嵌入汇编[14] - 常量与变量在汇编中的一个区别
- 初学 Delphi 嵌入汇编[2] - 汇编语言关键字
- 初学 Delphi 嵌入汇编[9] - asm 可以代替 begin
- 初学 Delphi 嵌入汇编[13] - 地址参数用 [] 取值
- 初学 Delphi 嵌入汇编[15] - 需要保护的寄存器
- 初学 Delphi 嵌入汇编[17] - 逻辑运算
- 初学 Delphi 嵌入汇编[23] - LOOP 循环
- 初学 Delphi 嵌入汇编[25] - 在汇编中调用函数
- 初学 Delphi 嵌入汇编[30] - 寄存器表
- 初学 Delphi 嵌入汇编[19] - Delphi 的无符号整数类型
- 初学 Delphi 嵌入汇编[8] - 8 位寄存器、16 位寄存器与 32 位寄存器
- 初学 Delphi 嵌入汇编[10] - 函数返回值与寄存器
- 初学 Delphi 嵌入汇编[5] - 寄存器在过程与函数中的使用 - 续
- 初学 Delphi 嵌入汇编[4] - 寄存器在过程与函数中的使用