Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Zeit messen, aber genau!

Wenn Sie beispielsweise fr Performancetests die fr einen Vorgang verwendete Zeit messen mchten, gibt es in Access verschiedene Mglichkeiten. Die genaueste lernen Sie in diesem Beitrag kennen.

Zeit messen per API

Die hier vorgestellte Variante der Zeitmessung bentigt zwei API-Funktionen,die Sie wie folgt deklarieren mssen:

Private Declare Function QueryPerformanceCounter Lib "kernel32.dll" _

    (ByRef lpPerformanceCount As Currency) As Long

 

Private Declare Function QueryPerformanceFrequency Lib kernel32.dll" _

    (ByRef lpFrequency As Currency) As Long

Die erste Funktion QueryPerformanceCounter schreibt den Stand eines prozessorinternen Zhlers in den bergebenen Parameter mit dem Datentyp Currency. Die zweite gibt an, welche Frequenz dieser Zhler hat, das heit, wie oft pro Sekunde der Zhler zhlt.

Nehmen Sie die API-Funktion Sleep hinzu, knnen Sie einmal kontrollieren, ob QueryPerformanceCounter und Sleep gleichschnell laufen.

Die Deklaration der Sleep-Funktion sieht so aus:

Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Beispiel: Wie lang ist eine Sekunde?

Die folgende Routine ermittelt den Zhlerstand vor und nach einer Pause von 1000 Millisekunden - also einer Sekunde. Auerdem wird die Frequenz ermittelt. Die Debug.Print-Anweisung gibt die Zeit aus, die laut QueryPerformanceCount fr die Pause von einer Sekunde bentigt wurde.

Public Function Zeitmessen()

    Dim curStart As Currency

    Dim curEnde As Currency

    Dim curFrequenz As Currency

    

    'Frequenz ermitteln

    QueryPerformanceFrequency curFrequenz

   

    'Startzeit ermitteln

    QueryPerformanceCounter curStart

   

    'Pause von einer Sekunde einlegen

    Sleep 1000

   

    'Endzeit ermitteln

    QueryPerformanceCounter curEnde

   

    'Ergebnis normieren und ausgeben

    Debug.Print (curEnde - curStart) / curFrequenz

   

End Function

 

© 2003-2015 André Minhorst Alle Rechte vorbehalten.