是'绝对'比Move()更快?

时间:2009-07-10 09:26:32

标签: delphi

例如,我们有一个DWORD = $ 12345678

哪个指令会更快 - 绝对或移动()?

var a:DWORD = $12345678;
    b:Array[0..3] of byte absolute a;


var a:DWORD = $12345678;b:Array[0..3] of Byte
begin
  Move(a,b,4);
end;

具体来说,我问的是'绝对'到底是做什么的,因为如果它没有使用额外的内存来编写那个byteArray那么我没有理由在这种情况下使用Move而不是绝对,那么'绝对'是如何工作的?

4 个答案:

答案 0 :(得分:18)

绝对不执行任何操作;它声明var的地址与另一个var的地址相同。

Move()执行复制操作,这需要一些时间。

绝对地,两个变量都存储在同一个地址,第二个声明将变量存储在不同的位置。

答案 1 :(得分:9)

'absolute'指令指向与指定变量相同的内存。没有代码被执行,所以是的,它比Move或任何其他代码更快。

答案 2 :(得分:6)

'绝对'只是另一种类型转换形式,就好像你有一个带有PByte指针的'A'DWORD的位置引用来处理字节为:PByte(@A)^ [0]:= 3 ,PByte(@A)^ [1]:= 4等。您正在以另一种方式戳戳(或读取)DWORD变量。 Pascal是一种强类型语言,但是使用类型转换(或ABSOLUTE),你几乎可以做任何事情。 BRI

答案 3 :(得分:1)

  

'绝对'是如何工作的?

请参阅Absolute (for) beginners