In a form:

VB Code:
  1. Option Explicit
  2.  
  3. Private Declare Function GetTickCount Lib "kernel32" () As Long
  4.  
  5. Private Sub Command1_Click()
  6.  
  7.     Dim lng As Long
  8.     Dim i As Long
  9.     Dim Start As Long
  10.     Dim Finish As Long
  11.    
  12.     lng = 1234567890
  13.    
  14.     Start = GetTickCount()
  15.     For i = 0 To 100000000
  16.         Call Deref1(VarPtr(lng))
  17.     Next
  18.     Finish = GetTickCount - Start
  19.     Text1.Text = Finish
  20.    
  21.     Start = GetTickCount()
  22.     For i = 0 To 100000000
  23.         Call Deref2(VarPtr(lng))
  24.     Next
  25.     Finish = GetTickCount - Start
  26.     Text2.Text = Finish
  27.    
  28. End Sub

IN a module:
VB Code:
  1. Option Explicit
  2.  
  3. Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
  4. Private Declare Sub GetMem4 Lib "msvbvm60" (ByVal Addr As Long, Value As Long)
  5.  
  6.  
  7. Public Function Deref1(Addr As Long) As Long
  8.     CopyMemory ByVal VarPtr(Deref1), ByVal Addr, 4
  9. End Function
  10.  
  11. Public Function Deref2(Addr As Long) As Long
  12.     GetMem4 Addr, Deref2
  13. End Function

Compiled with all optimisations on I get:

Deref1:6860
Deref2:3484