Declare Function QueryPerformanceCounter Lib "Kernel32" (X As Currency) As Boolean
Declare Function QueryPerformanceFrequency Lib "Kernel32" (X As Currency) As Boolean
Const cString As String = "ACDBDDDBCAB"
Const cSub As String = "ABDC"
Sub TimeThem()
Dim Ctr1 As Currency, Ctr2 As Currency, Freq As Currency
Dim intCounter As Integer
Dim strOut As String
If QueryPerformanceCounter(Ctr1) Then
QueryPerformanceCounter Ctr2
QueryPerformanceFrequency Freq
Debug.Print "Cycle = 1/" & _
Format(Freq * 10000, "#,###"); " sec"
Else
Debug.Print "High-resolution counter not supported."
Exit Sub
End If
Debug.Print "Testing String: "; cString, " against Substring: "; cSub
Debug.Print
'Longest_Substring
Ctr1 = 0: Ctr2 = 0: strOut = ""
QueryPerformanceCounter Ctr1
For intCounter = 1 To 10
strOut = Longest_Substring(cString, cSub)
Next intCounter
QueryPerformanceCounter Ctr2
Debug.Print "WinblowsME: Longest_Substring"
Debug.Print "-> "; Format$(Ctr2 - Ctr1, "#,###.00"); " cycles"
'LongestSubstring
Ctr1 = 0: Ctr2 = 0: strOut = ""
QueryPerformanceCounter Ctr1
For intCounter = 1 To 10
strOut = LongestSubstring(cString, cSub)
Next intCounter
QueryPerformanceCounter Ctr2
Debug.Print "CautionMP: LongestSubstring"
Debug.Print "-> "; Format$(Ctr2 - Ctr1, "#,###.00"); " cycles"
'FindLongestString
Ctr1 = 0: Ctr2 = 0: strOut = ""
QueryPerformanceCounter Ctr1
For intCounter = 1 To 10
strOut = FindLongestString(cString, cSub)
Next intCounter
QueryPerformanceCounter Ctr2
Debug.Print "HarleyQuinn: FindLongestString"
Debug.Print "-> "; Format$(Ctr2 - Ctr1, "#,###.00"); " cycles"
'Find_Longest_String
Ctr1 = 0: Ctr2 = 0: strOut = ""
QueryPerformanceCounter Ctr1
For intCounter = 1 To 10
strOut = Find_Longest_String(cString)
Next intCounter
QueryPerformanceCounter Ctr2
Debug.Print "xlbo: Find_Longest_String"
Debug.Print "-> "; Format$(Ctr2 - Ctr1, "#,###.00"); " cycles"
End Sub