Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
theory:time:windows [2010/07/19 14:44] xin angelegt |
theory:time:windows [2022/09/22 19:58] (aktuell) |
||
---|---|---|---|
Zeile 8: | Zeile 8: | ||
LARGE_INTEGER start, end, frequency; | LARGE_INTEGER start, end, frequency; | ||
- | if(!QueryPerformanceFrequency(&freq)) | + | if(!QueryPerformanceFrequency(&frequency)) |
{ | { | ||
/* PerformanceCounter wird nicht unterstützt */ | /* PerformanceCounter wird nicht unterstützt */ | ||
Zeile 14: | Zeile 14: | ||
</code> | </code> | ||
- | Auf dem Testrechner hier wird eine Frequenz von 2533370000 Signalen pro Sekunde zurückgegeben. Das bedeutet, dass ein Signal etwa alle 0,00000039 ms gezählt wird. Das bedeutet nicht, dass wir nun jedesmal in so kurzer Zeit informiert werden, das ist die Auflösung der Zeit, in der dieser Computer die Zeit angibt. | + | Auf dem Testrechner hier wird eine Frequenz von 2533370000 Signalen pro Sekunde zurückgegeben. Das bedeutet, dass ein Signal etwa alle 0,00000039 ms gezählt wird. Das bedeutet nicht, dass wir nun jedes Mal in so kurzer Zeit informiert werden, das ist die Auflösung der Zeit, in der dieser Computer die Zeit angibt. |
- | Wenn wir also zwischen zwei Meßpunkten 2533370000 Signale gezählt wurden, so ist eben eine Sekunde vergangen. | + | Wenn wir also zwischen zwei Messpunkten 2533370000 Signale gezählt wurden, so ist eben eine Sekunde vergangen. |
Die Funktion gibt einen Wert zurück. Ist diese Null (also false), so wird der PerformanceCounter nicht unterstützt. Das sollte aber nur bei sehr, sehr alten PCs vorkommen. Die Funktion selbst ist ab Windows2000 verfügbar. | Die Funktion gibt einen Wert zurück. Ist diese Null (also false), so wird der PerformanceCounter nicht unterstützt. Das sollte aber nur bei sehr, sehr alten PCs vorkommen. Die Funktion selbst ist ab Windows2000 verfügbar. | ||
Nun können wir die Zeit messen, die ein Vorgang benötigt: | Nun können wir die Zeit messen, die ein Vorgang benötigt: | ||
- | <code cpp>QueryPerformanceCounter(&begin); | + | <code cpp>QueryPerformanceCounter(&start); |
/* Programmabschnitt, dessen Zeit gemessen werden soll */ | /* Programmabschnitt, dessen Zeit gemessen werden soll */ | ||
Zeile 29: | Zeile 29: | ||
Die benötigte Zeit lässt sich nun wie folgt in Sekunden berechnen: | Die benötigte Zeit lässt sich nun wie folgt in Sekunden berechnen: | ||
- | <code>double elapsed = double(end.QuadPart - begin.QuadPart) / double(freq.QuadPart);</code> | + | <code>double elapsed = (double)(end.QuadPart - start.QuadPart) / (double)(frequency.QuadPart);</code> |