Geben alle eine Millisekunden-Auflösung?Was ist der Unterschied zwischen clock(), gettickcount(), QueryPerformanceCounter() und QueryPerformanceFrequency()?
Antwort
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
.
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
.
- 1. Was ist der Unterschied zwischen `==` und `ist`?
- 2. Was ist der Unterschied zwischen:.! und: r !?
- 3. Was ist der Unterschied zwischen Difftime und '-'?
- 4. Was ist der Unterschied zwischen $ und $$?
- 5. Was ist der Unterschied zwischen Verilog! und ~?
- 6. was ist der Unterschied zwischen [[], []] und [[]] * 2
- 7. Was ist der Unterschied zwischen/* ... */und/** ... */
- 8. Was ist der Unterschied zwischen `&` und `ref`?
- 9. Was ist der Unterschied zwischen $ (...) und `...`
- 10. Was ist der Unterschied zwischen .Equals und ==
- 11. Was ist der Unterschied zwischen "$^N" und "$ +"?
- 12. Was ist der Unterschied zwischen + = und = +?
- 13. Was ist der Unterschied zwischen? und ? = Nil
- 14. Was ist der Unterschied zwischen $ (()) und Ausdruck?
- 15. Was ist der Unterschied zwischen:
- 16. Was ist der Unterschied zwischen der JSP und der JSTL?
- 17. Was ist der Unterschied zwischen NetFx45WebLink und NetFx45RedistLink ist
- 18. Was ist der Unterschied zwischen PS1 und PROMPT_COMMAND ist
- 19. Was ist der Unterschied zwischen x86 und x64 ist
- 20. Was ist der Unterschied zwischen „ist None“ und „== None“
- 21. Was ist der Unterschied zwischen DISPATCH_QUEUE_CONCURRENT und DISPATCH_QUEUE_SERIAL ist
- 22. Was ist der Unterschied zwischen Task.Run ist() und Task.Factory.StartNew()
- 23. Was ist der Unterschied zwischen RewriteRule ist und umleiten 301
- 24. Was ist der Unterschied zwischen ist - (void) und + (void) Methoden
- 25. Was ist der Unterschied zwischen ist HttpResponseMessage und HttpResponseException
- 26. Was ist der Unterschied zwischen nohup und kaufmännisches Und
- 27. Was ist der Unterschied zwischen: und :: und ::: in Javascript Grammatik
- 28. Was ist der Unterschied zwischen Microsoft.AspNet.WebApi.OData und Microsoft.Data.OData und Microsoft.AspNet.OData?
- 29. Was ist der Unterschied zwischen Chisel und Lava und CLaSH?
- 30. Was ist der Unterschied zwischen SimpleNamespace und der leeren Klassendefinition?
Was sagt die Dokumentation? –