|
Tipp 0125
|
Genaue Zeitmessung
|
|
|
Autor/Einsender: Datum: |
|
Klaus D. Raudszus 26.06.2006 |
|
Entwicklungsumgebung: |
|
VB.Net 2003 |
Framework: |
|
1.1 |
|
|
Das Programm zeigt den Einsatz der API-Funktionen QueryPerformanceCounter und QueryPerformanceFrequency, die dann zum
Einsatz kommen, wenn mit Date, DateTime und Timespan die Auflösung nicht mehr gemessen wird.
|
Die Messungen im Millisekunden-Bereich sind mit DateTime und TimeSpan nicht möglich, da die systembedingte Auflösung bei ca.
12 ms liegt und sehr stark schwanken kann. Um kleinere Zeiten zumessen, wird der Hardware-Counter benutzt, der über die beiden API-Funktionen
abgefragt wird. Der Vollständigkeit halber muss auch gesagt werden, dass die Ergebnisse mit den API-Funktionen schwanken können, da Windows kein
Echt-Zeit-Betriebssystem ist.
|
|
|
'Die Struktur MeasureVars stellt Felder und Funktionen für die
'Zeitmessung zur Verfügung
Public Structure MeasureVars
Public pcs As Long
Public pce As Long
Public pf As Long
Private Function PerfomanceTime() As Double
Return CType(((pce - pcs) / pf * 1000), Double)
End Function
Public Function MeasureTime(ByVal str As String) As String
Return String.Format(str & "{0:0.000} ms", Me.PerfomanceTime)
End Function
End Structure
'Die Klasse QPCounter stellt die API-Funktionen zur Abfrage des
'Hardware-Counters
Public Class QPCounter
Public Declare Auto Function QueryPerformanceCounter Lib _
"Kernel32.dll" (ByRef performanceCount As Long) As Boolean
Public Declare Auto Function QueryPerformanceFrequency Lib _
"Kernel32.dll" (ByRef frequency As Long) As Boolean
End Class
|
|
|
|
|
Windows-Version |
98/SE |
|
|
ME |
|
|
NT |
|
|
2000 |
|
|
XP |
|
|
Vista |
|
|
Win
7 |
|
|
|
|
Download (18,1 kB)
|
Downloads bisher: [ 836 ]
|
|
|