Sourcecodes - Zeitmessung mit C++ mit dem QueryPerformanceCounter

Sprachenübersicht/C / C++/ C#/System

Zeitmessung mit C++ mit dem QueryPerformanceCounter

Diese Seite wurde 28662 mal aufgerufen.

Dieser Artikel wurde in einem Wikiweb System geschrieben, das heißt, Sie können die Artikel jederzeit editieren, wenn Sie einen Fehler gefunden haben, oder etwas hinzufügen wollen.

Editieren Versionen Linkpartnerschaft Bottom Printversion

Keywords: Zeit, Time, QueryPerformanceCounter

Eine Möglichkeit zur genauen Zeitmessung stellt der Performance Counter dar. Das ist ein Hardwarebaustein, der mit 3,19 MHz getaktet wird, und somit 0,313 mikrosekunden genau ist. Die Windows Timer Nachricht hat eine niedrige Priorität und kann untergehen. Seit dem Pentium ist er AFAIK in allen PCs vorhanden.

Hier der Code für Windows:

Code:


#include <windows.h>
#include <iostream>

    //Variablen
    LONGLONG g_Frequency, g_CurentCount, g_LastCount;

    //Frequenz holen
    if (!QueryPerformanceFrequency((LARGE_INTEGER*)&g_Frequency))
        std::cout << "Performance Counter nicht vorhanden" << std::endl;

    //1. Messung
    QueryPerformanceCounter((LARGE_INTEGER*)&g_CurentCount);

    Sleep(10);  // Sleep ist ungenau, darum wird nicht 10ms herauskommen

    //2. Messung
    QueryPerformanceCounter((LARGE_INTEGER*)&g_LastCount);

    double dTimeDiff = (((double)(g_LastCount-g_CurentCount))/((double)g_Frequency)); 

    std::cout << "Zeit: " << dTimeDiff << std::endl;



Eine weitere Möglichkeit wäre timeGetTime(), diese Funktion liefert Millisekunden und braucht die Header Datei mmsystem.h und winmm.lib.

Alternativen: msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/win...

Gibt es noch irgendwelche Fragen, oder wollen Sie über den Artikel diskutieren?

Editieren Versionen Linkpartnerschaft Top Printversion

Haben Sie einen Fehler gefunden? Dann klicken Sie doch auf Editieren, und beheben den Fehler, keine Angst, Sie können nichts zerstören, der Artikel kann wiederhergestellt werden.

Sprachenübersicht/C / C++/ C#/System/Zeitmessung mit C++ mit dem QueryPerformanceCounter