Quelle est la meilleure, la plus précise de la minuterie en C++?
Quelle est la meilleure, la plus précise de la minuterie en C++?
Le meilleur de la minuterie serait probablement un système d'appel sur un système d'exploitation temps réel en cours d'exécution sur une plate-forme embarquée périphérique relié à une horloge atomique. Est-ce que vous cherchez, ou êtes-vous prêt à régler pour quelque chose d'un peu moins de "le meilleur, le plus précis de la minuterie"?
Et le temps passé à voyager le long des fils, et à être traitées/etc est également pris en approximative de considération? (Cette phrase n'a pas de sens...)
Aussi, une telle résolution élevée minuterie peut manger de la CPU.
Et le temps passé à voyager le long des fils, et à être traitées/etc est également pris en approximative de considération? (Cette phrase n'a pas de sens...)
Aussi, une telle résolution élevée minuterie peut manger de la CPU.
OriginalL'auteur Josh Morrison | 2011-04-02
Vous devez vous connecter pour publier un commentaire.
La réponse à cette question est spécifique à la plateforme. Le système d'exploitation est responsable pour garder une trace du moment et, par conséquent, le langage C++ lui-même ne fournit pas de constructions de langage ou des fonctions intégrées pour le faire.
Cependant, voici quelques ressources pour la plate-forme dépendante de minuteries:
SetTimer
: http://msdn.microsoft.com/en-us/library/ms644906(v=vs. 85).aspxsetitimer
: http://linux.die.net/man/2/setitimerUne croix-plate-forme de solution pourrait être boost::asio::deadline_timer.
OriginalL'auteur Nathan Osman
En C++11, vous pouvez obtenir de façon portable à la résolution la plus élevée de la minuterie avec:
Exemple de sortie:
"chrono_io" est une extension pour faciliter les problèmes d'e/S avec ces nouveaux types et il est disponible gratuitement ici.
Il y a aussi une mise en œuvre de
<chrono>
disponible en boost (peut-être encore sur la pointe-de-tronc, pas sûr qu'il a été publié).La commutation de contexte est probable. Cela dépend de la plate-forme, le compilateur (même version de compilateur), ce que d'autres processus sur la machine, etc. Générales de l'ordinateur n'est pas une grande horloge, sauf si elle est constamment en train de demander à d'autres ordinateurs à l'heure qu'il est. 😉 Sur macOS-je obtenir assez solide timings moins time machine sauvegarde, spotlight est l'indexation ou la messagerie est l'extraction.
OriginalL'auteur Howard Hinnant
Sous windows il serait
QueryPerformanceCounter
, mais vu que vous n'avez pas préciser toutes les conditions il possible d'avoir un externe ultra-haute résolution à rebours qui a une interface c++ pour le conducteurVoir ma réponse ci-dessus.
OriginalL'auteur Necrolis
La norme C++ ne prend pas en dire beaucoup sur le temps. Il ya quelques caractéristiques héritées de C via le
<ctime>
en-tête.La fonction
clock
est la seule manière d'obtenir une précision inférieure à la seconde, mais la précision peut être aussi bas que un deuxième (elle est définie par la macroCLOCKS_PER_SEC
). Aussi, il ne mesure pas le temps réel à tous, mais de temps processeur.La fonction
time
mesures en temps réel, mais (normalement) à la seconde près.De mesurer en temps réel avec subsecond de précision, vous avez besoin d'un autre bibliothèque.
OriginalL'auteur Potatoswatter