QueryPerformanceCounter Überlauf - Längste mögliche Messbare Zeit



  • Hallo!

    Ich verwende Queryperformancecounter, um eine Funktion wiederholend in einem bestimmten Intervall aufzurufen.
    QueryPerformanceCounter nehme ich, um auch Zeiten im Millisekundenbereich einigermaßen vernünftig messen zu können.

    Andererseits verwende ich dieselbe Funktion, um die gesamtzeit zu messen, die mein Code bereits läuft, da man einstellen kann, nach welcher Zeit das Programm beendet werden soll.

    Dabei kommt es zwar nicht so sehr auf Genauigkeit an, aber ich dachte, ich nehme den selben QueryPerformanceCounter.

    Für die gesamtlaufzeit sind unter Umständen auch Zeiten im Bereich von mehreren Tagen denkbar. Kann es dabei zu Problemen kommen?

    Was ist die längste messbare Zeit des PerformanceCounters?

    mfg



  • Also wenn ichs recht verstanden ha, ist der Rückgabewert ein ULONGLONG, also unsigned __int64.

    2^64 = 18446744073709551616

    Meine Frequenz ist bei etwa 3000000 pro Sekunde.
    Das reicht, wenn ich mich nicht verrechnet habe, für knapp 200000 Jahre, ohne Berücksichtigung der Schaltjahre.



  • Das kannst Du doch selber ausrechnen...
    Im schlimmsten Fall verwendet QPC den rtdsc, also die Frequenz Deiner CPU.
    Gehen wir mal hier von 4 GHz aus.
    Die Größe des QPC-Wertes ist 64-Bit.

    1 GHz entspricht 4000000000 in einer Sekunde
    In einen 64-Bit Wert (wir gehen lieber von 63-Bit wegen dem Vorzeichen aus) können max. 9223372036854775808 enthalten sein.
    => Es können max. 2305843009,213693952 Sekunden dargestellt werden
    => 38430716,820228232533333333333333 Minuten
    => 640511,94700380387555555555555556 Stunden
    => 26687,997791825161481481481481481 Tage
    => 73,117802169384004058853373921867 Jahre.

    Also, wenn Dein Programm 100%ig nicht länger als 73 Jahre am Stück läuft und sich die Prozossorgeschwindigkeit nicht wesentlich erhöht, kannst Du es verwenden...



  • ok, vielen Dank.


Anmelden zum Antworten