Performance Counter ungenau?



  • Hallo,

    ich möchte einen Schutz gegen Speeder erstellen. Da diese Programme oft den Performance Counter in Ruhe lassen, vergleiche ich die verstrichene Systemzeit mit der des Performance Counters.

    LARGE_INTEGER SP_PC;
    ulong SP_TC=GetTickCount();
    QueryPerformanceCounter(&SP_PC);
    
    LARGE_INTEGER PC_Freq;
    QueryPerformanceFrequency(&PC_Freq);
    
    double PSec_PC=double(SP_PC.QuadPart-SP_PC_Start.QuadPart)/double(PC_Freq.QuadPart);
    double PSec_TC=(SP_TC-SP_TC_Start)/1000.0;
    
    //SP_PC_Start und SP_TC_Start werden beim Programmstart natürlich gleichzeitig gesetzt
    

    Nun ist es aber so, dass während beim System 300 Sekunden vergehen, es beim Performance Counter nur etwa 299 sind. Das macht etwa 10-12 Sekunden pro Stunde und jeden Tag müsste sich die Systemzeit dabei eigentlich um 5 Minuten verstellen. Das ist aber nicht der Fall... die Zeit wird auch nicht mit einem Internetzeitserver synchronisiert, zumal ich oft tagelang nicht mit dem Internet verbunden bin.
    Ist der Performance Counter also ungenau? Eigentlich sollte er ja gerade besonders genaue Zeitwerte liefern. Oder mache ich bei der Berechnung was falsch?



  • Der Performance-Counter ist dazu da kurze Zeiten zu Messen! Es ist keine Uhrzeit!



  • Jochen Kalmbach schrieb:

    Der Performance-Counter ist dazu da kurze Zeiten zu Messen! Es ist keine Uhrzeit!

    Das ist mir klar, aber die Differenz zwischen zwei Werten des Counters sollte trotzdem eine Zeitdifferenz sein. Also wird dieser Counter über einen längeren Zeitraum tatsächlich ungenau? Schade, ich dachte, gerade das wäre nicht der Fall 😕



  • Nanyuki schrieb:

    Ist der Performance Counter also ungenau?

    evtl. http://support.microsoft.com/kb/172338

    Nanyuki schrieb:

    zumal ich oft tagelang nicht mit dem Internet verbunden bin.

    😮 sowas geht 😕


Anmelden zum Antworten