2009-10-13 9 views

Antwort

3

clock

A C++ Funktion. Er gibt die Nummer CPU-Ticks seit dem Start der Anwendung zurück. Um dies in Sekunden zu konvertieren, teilen Sie es durch CLOCKS_PER_SEC.

GetTickCount

A Win32 API-Funktion. Gibt die Anzahl der Millisekunden zurück, seit das System gestartet wurde.

QueryPerformanceCounter

A Win32 API-Funktion. Der Leistungszähler ist ein hochauflösender Zähler, der mit der Zeit zunimmt. Um dies in Sekunden umzuwandeln, teile es durch QueryPerformanceFrequency.

7

Nein, sie haben keine Millisekundengenauigkeit. clock und GetTickCount haben auf den meisten Systemen eine Genauigkeit zwischen 4 und 15 Millisekunden. QueryPerformanceCounter hat eine Genauigkeit im Mikrosekunden- bis Nanosekundenbereich.

clock ist ein Wrapper um GetTickCount, wenn Sie die C-Laufzeitbibliothek von Microsoft verwenden, die Sie wahrscheinlich verwenden, wenn Sie einen MS-Compiler verwenden. GetTickCount gibt einen Wert in Millisekunden zurück, nach einer Millisekunde jedoch nicht um eine Millisekunde. Es wird nur erhöht, wenn ein Systemtakt-Interrupt auftritt, der alle vier bis 15 Millisekunden ist - normalerweise sind es ungefähr 15 ms, aber er kann durch Anwendungen geändert werden. Dies wirkt sich auf den gesamten Computer aus: Es wirkt sich auf die Thread-Planung aus, und der Overhead häufigerer Interrupts lässt auch weniger CPU-Zeit für die Ausführung von Programmcode, also tun Sie es nicht, wenn Sie es wirklich brauchen. Wenn Ihr Computer häufiger als 15 ms tickt, hat eine andere Anwendung die Häufigkeit der Tick-Interrupts geändert.

QueryPerformanceCounter verwendet alle hochauflösenden Timer, die auf dem System verfügbar sind. In der Vergangenheit basierte es normalerweise auf der internen Anzahl von Taktzyklen des Prozessors, würde also bei 2-3 GHz oder etwa 0,5 ns zählen. Leider änderten einige Prozessoren die Rate, mit der der Zähler in einem Zustand niedriger Leistung tickte, und in Multi-CPU-Systemen (d. H. Mit mehreren Prozessorsockeln) würden Probleme auftreten, wenn die CPUs nicht alle die gleiche Geschwindigkeit hätten. Windows verwendet jetzt andere zuverlässigere Quellen, aber sie sind nicht ganz so hochauflösend wie der Prozessor. QueryPerformanceFrequency sagt Ihnen, wie viele Ticks in einer Sekunde auftreten. Um Millisekunden zu erhalten, multiplizieren Sie die Differenz der QPC-Samples mit 1000 und dividieren Sie sie durch das Ergebnis QueryPerformanceFrequency.

Verwandte Themen