La capture d'un temps en millisecondes
Le morceau de code suivant est utilisé pour imprimer tout le temps dans les journaux:
#define PRINTTIME() struct tm * tmptime;
time_t tmpGetTime;
time(&tmpGetTime);
tmptime = localtime(&tmpGetTime);
cout << tmptime->tm_mday << "/" <<tmptime->tm_mon+1 << "/" << 1900+tmptime->tm_year << " " << tmptime->tm_hour << ":" << tmptime->tm_min << ":" << tmptime->tm_sec<<">>";
Est-il possible d'ajouter quelques millisecondes à cela?
double possible de Comment faire pour obtenir l'heure en millisecondes depuis 1970, juste la façon dont Java devient
OriginalL'auteur ronan | 2009-07-13
Vous devez vous connecter pour publier un commentaire.
D'avoir la précision à la milliseconde vous avez à utiliser le système des appels spécifiques à votre système d'exploitation.
Dans Linux, vous pouvez utiliser
timeval
a la microseconde de précision.Dans Windows, vous pouvez utiliser:
Bien sûr, vous pouvez utiliser Stimuler le faire pour vous 🙂
Pour Linux, vous doit lire (7), et probablement utiliser les clock_gettime(2)
Peut-être que vous pourriez fournir les en-têtes pour les fonctions?
fait 🙂
OriginalL'auteur neuro
//C++11 Style:
OriginalL'auteur user3762106
Vous avez besoin d'un timer avec une résolution supérieure dans le but de capturer des millisecondes. Essayez ceci:
C'est bien sûr dépendant de votre système d'exploitation.
dans mon programme Linux-je recevoir le double des valeurs de l'horloge()
OriginalL'auteur
Les minuteurs de haute résolution sont généralement gettimeofday sur Linux style plates-formes et QueryPerformanceCounter sur Windows.
Vous devez être conscient que le moment choisi pour la durée d'une seule opération (même avec une haute résolution de la minuterie) ne donneront pas de résultats précis. Il y a trop de facteurs aléatoires à jouer. Pour obtenir fiable des informations de synchronisation, vous devez exécuter la tâche de façon à être programmé dans une boucle, et de calculer la moyenne du temps de travail. Pour ce type de calendrier, l'horloge() la fonction devrait être suffisant.
OriginalL'auteur Eric
Si vous ne souhaitez pas utiliser n'importe quel OS du code spécifique, vous pouvez utiliser le ACE package qui fournit les
ACE_OS::gettimeofday
fonction de la plupart des systèmes d'exploitation.Par exemple:
Ce code fonctionnera quel que soit votre système d'exploitation (tant que ACE prend en charge cet OS).
OriginalL'auteur Yuval Baror
Dans Ubuntu 16.04 cela a fonctionné pour moi...
Puis, avec...
- Je obtenir...
OriginalL'auteur MauriRamone
Nouvelle réponse pour les vieux de la question à l'aide de C++11 et C++14 et ce gratuit, open-source de la bibliothèque:
Ce juste sortie pour moi:
qui est mon heure et la date locales de la précision à la milliseconde. En éliminant le
floor<milliseconds>()
vous obtiendrez automatiquement quelle que soit la précision de votresystem_clock
a.Si vous voulez que le résultat comme un horodatage UTC au lieu d'un timestamp local, il est encore plus facile:
Et si vous voulez un horodatage UTC et vous n'êtes pas pointilleux sur la précision ou le format, vous pouvez juste:
qui vient de sortie pour moi:
OriginalL'auteur Howard Hinnant