Kontakt  Anfahrtplan   Datenschutzerklärung  Impressum Englisch 

Service: Code-Beispiele: Zeitmessungen


Von Zeit zu Zeit muss man in seinem Quellcode irgend eine Laufzeit messen. Z.B. um herauszufinden, wie lange eine Kontroll-Schleife läuft, dabei vielleicht verschiedene Varianten testen, um die Beste zu finden.

Unter Windows bietet timeGetTime() eine passable Möglichkeit dazu. Allerdings ist der Einsatz normalerweise etwas umständlich.

Unter VB 6.0 z.B. so:

' Notwendiger Funktionsmport:
    Private Declare Function timeGetTime Lib "winmm.dll" () As Long

' Verwenden:
    Dim iStart As Long
    iStart = timeGetTime
    For c = 1 To 1000
        Dummy
    Next
    Debug.Print "Dummy: " & CStr(timeGetTime - iStart)

    iStart = timeGetTime
    For c = 1 To 1000
        DummyVariant
    Next
    Debug.Print "DummyVariant: " & CStr(timeGetTime - iStart)
    

oder in C++:

// Header einbinden:
#include <mmsystem.h>

// Verwenden:
    long  lStart = timeGetTime();
    for (long c = 0; c < 1000; c++)
        Dummy();
    ATLTRACE(_T("Dummy() Duration: %d\n"), timeGetTime() - lStart);

    lStart = timeGetTime();
    for (long c = 0; c < 1000; c++)
        DummyVariant();
    ATLTRACE(_T("DummyVariant() Duration: %d\n"), timeGetTime() - lStart);
    

Dabei ist jedoch nicht berücksichtigt, dass timeGetTime() nach 2^32 Millisekunden ein 'Wrap Around' macht, also wieder bei 0 anfängt. Dadurch kann das Messergebnis 'geringfügig' verfälscht werden ...


Meine Klasse CDuration für die ich eine VB 6.0 und eine C++ Implementierung geschrieben habe vereinfacht die Handhabung und behandelt den Wrap Around

Unter VB 6.0 verwenden:

    Dim dur As CDuration
    set dur = new CDuration
    dur.Theme = "Dummy"
    For c = 1 To 1000
        Dummy
    Next
    dur.TraceDuration

    dur.Theme = "DummyVariant"
    For c = 1 To 1000
        DummyVariant
    Next
    dur.TraceDuration
    

oder in C++:

// Header einbinden:
#include <duration.h>

// Verwenden:
    CDuration dur;
    dur.SetTheme("Dummy()");
    for (long c = 0; c < 1000; c++)
        Dummy();
    dur.TraceDuration();

    dur.SetTheme("DummyVariant()");
    for (long c = 0; c < 1000; c++)
        DummyVariant();
    dur.TraceDuration();
    

Ich stelle den Quellcode kostenlos zum Herunterladen (und Verwenden) zur Verfügung unter der Auflage, dass die Nutzungsbedingungen (Terms of Use) (*) eingehalten werden.

* You are free to use, distribute or modify this code as long as this header is not removed or modified.

Seitenanfang


Wider dem Blindflug!

Wenn Sie wissen wollen, was so alles auf Ihrem PC passiert!

Lesen Sie dies ...


Einfach - Schnell - Günstig!

Tischrechner als Software.

Jetzt herunterladen und kostenlos testen!

Mehr lesen ...


Effektiver Arbeiten!

Tastenkombinationen können PC-Arbeit erheblich beschleunigen.

Mehr lesen ...


Kleine Helfer für Sie:

Eine Reihe von kostenlosen Online-Berechnungen zur Erleichterung der täglichen Arbeit.

Ausprobieren ...


Wissenswertes!

Sicherheit im PC-Bereich

Es existiert eine kostenlose, einfache und äußert effektive Methode, fast alle Viren, Trojaner, Würmer ...

Mehr lesen ...