2009-07-10 10 views
5

たとえば、DWORD = $ 12345678はMove()よりも「絶対的」に速いですか?

どの命令がより高速になるか - 絶対またはMove()ですか?それは私がそうどのような場合には代わりに絶対の移動に使用する理由がない、そのBYTEARRAYを書くために追加のメモリを使用していない場合ので、

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; 

具体的には、私は、まさに「絶対的な」何を求めています'絶対的な'仕事ですか?

答えて

18

絶対操作は実行されません。 varのアドレスが別のvarと同じであると宣言します。

Move()はコピー操作を実行しますが、しばらく時間がかかります。

アブソリュートでは、両方のvarsは同じアドレスに格納され、2番目の宣言では異なる場所にvarsが格納されます。

9

'absolute'指示文は、指定された変数と同じメモリを指します。コードは実行されないので、移動や他のコードより速いです。

6

'Absolute'は、バイトを扱うためのPByteポインタを持つ 'A' DWORDへの位置参照を持っているかのようにタイプキャストの別の形式です:PByte(@A)^ [0]:= 3、PByte(@A)^ [1]:= 4など他の方法でDWORD変数を突き刺す(または読み込む)パスカルは強く型付けされた言語ですが、型キャスト(またはABSOLUTE)を使用すると、ほとんど何でもできます。 Bri

関連する問題