In a form:
VB Code:
Option Explicit Private Declare Function GetTickCount Lib "kernel32" () As Long Private Sub Command1_Click() Dim lng As Long Dim i As Long Dim Start As Long Dim Finish As Long lng = 1234567890 Start = GetTickCount() For i = 0 To 100000000 Call Deref1(VarPtr(lng)) Next Finish = GetTickCount - Start Text1.Text = Finish Start = GetTickCount() For i = 0 To 100000000 Call Deref2(VarPtr(lng)) Next Finish = GetTickCount - Start Text2.Text = Finish End Sub
IN a module:
VB Code:
Option Explicit Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long) Private Declare Sub GetMem4 Lib "msvbvm60" (ByVal Addr As Long, Value As Long) Public Function Deref1(Addr As Long) As Long CopyMemory ByVal VarPtr(Deref1), ByVal Addr, 4 End Function Public Function Deref2(Addr As Long) As Long GetMem4 Addr, Deref2 End Function
Compiled with all optimisations on I get:
Deref1:6860
Deref2:3484




Reply With Quote