Visual Basic - Technik, FAQ, Tricks, Beispiele

Home / Allgemein / Zeit / Timer

Genauerer Timer

Historie
05.07.2001Beispiel hinzugefügt
31.07.2000Erste Version

Einleitung

Zur genauen Zeitmessung bietet das Betriebssystem einen alternativen Timer mit einer höheren Auflösung, als die von VB zur Verfügung gestellten Funktionen Timer oder gar Now.

Beispiel

Das folgende Code-Fragment zeigt, wie man die Dauer mehrerer Aktionen misst:

Dim t0 As Double
Dim t1 As Double
Dim t2 As Double

t0 = QPTimer
DoAktion1()
t1 = QPTimer
DoAktion2()
t2 = QPTimer

Print "Dauer Aktion 1:", t1 - t0
Print "Dauer Aktion 2:", t2 - t1
Print "Dauer zusammen:", t2 - t0

Code / Quelltext

Im Deklarationsteil eines Moduls werden folgende API-Routinen bekannt gemacht:

Private Declare Sub QueryPerformanceCounter _
    Lib "kernel32" (lpPerformanceCount As Currency)
Private Declare Sub QueryPerformanceFrequency _
    Lib "kernel32" (lpFrequency As Currency)

Hier der eigentliche Code:

Public Function QPTimer() As Double
  Static Takt As Currency
  Dim Dauer As Currency
  
  If Takt = 0 Then
    'einmal die Taktfrequenz bestimmen:
    QueryPerformanceFrequency Takt
  End If
  
  'aktuelle Zeit holen:
  QueryPerformanceCounter Dauer
  
  'Zeit in Sekunden umrechnen:
  QPTimer = Dauer / Takt
End Function

Diese Funktion gibt übrigens die Zeit in Sekunden an, die seit dem Starten von Windows vergangen sind.

© Jost Schwider, 30.04.2000-05.07.2001 - http://vb-tec.de/timer.htm