Publish date: 2003-01-17

ActiveX Components. Calculation of CPU time (VB)

'sample of work with 'IBPSamples.TThreadTimerNT'
'required NT-system
'1 download _ibp_sample_obj.dll from www.ibprovider.com
'2 execute: regsvr32 _ibp_sample_obj.dll
'3 add in your VB-project the reference to 'LCPI - IBProvider Samples' library

Function sample_9_3_build_time(time As IBPSamples.TThreadTime) As String
 Dim s As String

 s = CStr(time.Fraction)

 While Len(s) < 7
  s = "0" + s
 Wend

 sample_9_3_build_time = CStr(time.Seconds) + "." + s + " sec"
End Function 'sample_9_3_print_thread_time

Sub sample_9_3()
 'large table
 Const c_table_name As String = "people"

 Dim cn              As New ADODB.Connection
 Dim thread_timer    As New IBPSamples.TThreadTimerNT

 cn.Provider = "LCPI.IBProvider"
 cn.Open "data source=st33:e:\database\new_db57.gdb;ctype=win1251", "gamer", "vermut"

 Debug.Print cn.Properties("Provider Name")
 Debug.Print cn.Properties("Provider Version")

 cn.BeginTrans

 Dim rs As ADODB.Recordset
 Set rs = New ADODB.Recordset

 '----------------------------------------
 Debug.Print "Fetch each row"

 rs.Open c_table_name, cn, adOpenKeyset, adLockReadOnly

 Call thread_timer.Start(True)

 While Not rs.EOF
  rs.MoveNext
 Wend

 Call thread_timer.Stop

 rs.Close

 Debug.Print "Total Time:" & sample_9_3_build_time(thread_timer.TotalTime)

 '---------------------------------------
 Debug.Print "MoveLast"

 rs.Open c_table_name, cn, adOpenKeyset, adLockReadOnly

 Call thread_timer.Start(True)

 rs.MoveLast

 Call thread_timer.Stop

 Debug.Print "Total Time:" & sample_9_3_build_time(thread_timer.TotalTime)

 '----------------------------------------
 Debug.Print "fetch each row in local buffer"

 rs.MoveFirst

 Call thread_timer.Start(True)

 While (Not rs.EOF)
  rs.MoveNext
 Wend

 Call thread_timer.Stop

 Debug.Print "Total Time:" & sample_9_3_build_time(thread_timer.TotalTime)

End Sub 'sample_9_3