You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

87 lines
2.4 KiB

Option Strict Off
Option Explicit On
Friend Class clsXTimer
Private Sub CODFORCOPY_PAST()
'===============================================================================
'Dieser Codteil wird für die Messung gebraucht
'===============================================================================
Dim m_clsXTime As New clsXTimer()
m_clsXTime.Calibrate()
m_clsXTime.StartTimer()
'Zu messender Code go's here
m_clsXTime.StopTimer()
End Sub
#Region " Class Constructor "
Public Sub New()
MyBase.New()
Class_Initialize_Renamed()
End Sub
#End Region
#Region " Deklarationen "
Private Declare Function QueryPerformanceCounter Lib "kernel32" (ByRef lpPerformanceCount As clsXTimer.LARGE_INTEGER) As Integer
Private Declare Function QueryPerformanceFrequency Lib "kernel32" (ByRef lpFrequency As clsXTimer.LARGE_INTEGER) As Integer
Private Structure LARGE_INTEGER
Dim lowpart As Integer
Dim highpart As Integer
End Structure
Private m_liStart As clsXTimer.LARGE_INTEGER
Private m_liEnd As clsXTimer.LARGE_INTEGER
Private m_liFreq As clsXTimer.LARGE_INTEGER
Private m_dblCalibr As Double
#End Region
#Region " Eigenschaften "
Public ReadOnly Property RunTime() As Object
Get ' ms
RunTime = Math.Abs((Calibr(m_liEnd) - Calibr(m_liStart)) / Calibr(m_liFreq) * 1000 - m_dblCalibr)
If RunTime < 0 Then RunTime = 0
End Get
End Property
#End Region
#Region " Timer "
Public Sub Calibrate()
Call QueryPerformanceCounter(m_liStart)
Call QueryPerformanceCounter(m_liEnd)
m_dblCalibr = (Calibr(m_liEnd) - Calibr(m_liStart)) / Calibr(m_liFreq) * 1000 ' Millisekunden.
End Sub
Public Sub StartTimer()
Call QueryPerformanceCounter(m_liStart)
End Sub
Public Sub StopTimer()
Call QueryPerformanceCounter(m_liEnd)
MsgBox("Verstichene Zeit=" & Format(RunTime, "0.00 ms"))
End Sub
Public Function Stop_nd_GetTime() As String
Call QueryPerformanceCounter(m_liEnd)
Return Format(RunTime, "0.00 ms")
End Function
Private Function Calibr(ByRef liX As clsXTimer.LARGE_INTEGER) As Double
Calibr = liX.lowpart + liX.highpart * 4294967296.0#
End Function
Private Sub Class_Initialize_Renamed()
Call QueryPerformanceFrequency(m_liFreq)
End Sub
#End Region
End Class