Ont-ils tous une résolution d'une milliseconde?Quelle est la différence entre clock(), gettickcount(), QueryPerformanceCounter() et QueryPerformanceFrequency()?
Répondre
clock
une fonction C++. Il renvoie le nombre cœurs CPU depuis le démarrage de l'application. Pour convertir cela en secondes, divisez-le par CLOCKS_PER_SEC
.
GetTickCount
Une fonction API Win32. Renvoie le nombre de millisecondes depuis le démarrage du système.
QueryPerformanceCounter
Une fonction API Win32. Le compteur de performance est un compteur haute résolution qui augmente avec le temps. Pour convertir cela en secondes, divisez-le par QueryPerformanceFrequency
.
Non, ils n'ont pas de précision en millisecondes. clock
et GetTickCount
ont entre 4 et 15 millisecondes de précision sur la plupart des systèmes. QueryPerformanceCounter
a une précision de l'ordre de la microseconde à la nanoseconde.
clock
est une enveloppe autour de GetTickCount
si vous utilisez la bibliothèque d'exécution C de Microsoft, qui, si vous utilisez un compilateur MS, vous l'êtes probablement. GetTickCount
renvoie une valeur en millisecondes, mais n'augmente pas d'une milliseconde après l'écoulement d'une milliseconde. Il n'est incrémenté que lorsqu'une interruption de l'horloge système se produit, soit toutes les quatre à 15 millisecondes - normalement elle est d'environ 15 ms, mais elle peut être modifiée par les applications. Cela affecte l'ensemble de l'ordinateur: il affecte la planification des threads, et le temps système des interruptions plus fréquentes laisse également moins de temps CPU pour exécuter le code du programme, donc ne le faites pas à moins que vous n'en ayez vraiment besoin. Si votre ordinateur est en train de cocher plus de 15 ms, une autre application a modifié la fréquence d'interruption du tick.
QueryPerformanceCounter
utilise les minuteurs de haute résolution disponibles sur le système. Dans le passé, il était généralement basé sur le compte interne des cycles d'horloge du processeur, donc compterait à 2-3GHz, soit environ 0,5ns. Malheureusement, certains processeurs variaient le débit auquel le compteur se heurterait dans les états de faible puissance, et dans les systèmes multi-processeurs (c'est-à-dire avec plusieurs sockets de processeur) vous auriez des problèmes si les processeurs n'étaient pas tous à la même vitesse. Windows utilise maintenant d'autres sources plus fiables, mais leur résolution n'est pas aussi élevée que celle du processeur. QueryPerformanceFrequency
vous indique combien de ticks se produisent en une seconde. Pour obtenir millisecondes, il faut multiplier la différence d'échantillons par 1000 QPC, et diviser par le résultat de QueryPerformanceFrequency
.
- 1. Quelle est la différence entre dict() et {}?
- 2. quelle est la différence entre:.! et: r !?
- 3. Quelle est la différence entre = et: =
- 4. Quelle est la différence entre X509Certificate2 et X509Certificate in .NET?
- 5. Quelle est la différence entre Databinder.Eval et Container.DataItem?
- 6. Quelle est la différence entre DAO et Data Mapper
- 7. Quelle est la différence entre Keyboard.Focus (point) et item.Focus()?
- 8. Quelle est la différence entre les schémas W3 et xmlsoap.org?
- 9. Quelle est la différence entre JAIN SIP et MJSIP?
- 10. Quelle est la différence entre openGL et EAGL/openAL?
- 11. Quelle est la différence entre un nanokernel et un exokernel?
- 12. Quelle est la différence entre UML 2.1.2 et UML 2.2
- 13. Quelle est la différence entre ASP.NET DynamicData et IronSpeed?
- 14. Quelle est la différence entre DTCPing et DTCTester?
- 15. Quelle est la différence entre RMI et Corba?
- 16. Quelle est la différence entre "bool" et "bool?"
- 17. Quelle est la différence entre -ggdb gcc et -g gcc
- 18. Quelle est la différence entre RTN concret et RTN abstrait?
- 19. Quelle est la différence entre% Q et% {} dans ruby?
- 20. Quelle est la différence entre XML-RPC et SOAP?
- 21. Quelle est la différence entre Page.IsPostBack et Page.IsCallBack?
- 22. Quelle est la différence entre C et Embedded C?
- 23. Quelle est la différence entre nohup et un démon?
- 24. Quelle est la différence entre // et /// dans Visual Studio?
- 25. Quelle est la différence entre memset et memcpy dans C
- 26. Quelle est la différence entre Server.MapPath et HostingEnvironment.MapPath?
- 27. Quelle est la différence entre latin1_general_ci et utf8_bin dans MYSQL
- 28. Quelle est la différence entre debug.write et Trace.write?
- 29. Quelle est la différence entre un midlet et un corelet?
- 30. Quelle est la différence entre TAggregateField.IsNull et (TAggregateField.Value = Null)
Que dit la documentation? –