12
votes

Capturer un temps en millisecondes

La pièce de code suivante est utilisée pour imprimer l'heure 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<<">>";


7 Réponses :


4
votes

Vous avez besoin d'une minuterie avec une résolution plus élevée afin de capturer des millisecondes. Essayez ceci:

int cloc = clock();
//do something that takes a few milliseconds
cout << (clock() - cloc) << endl;


2 commentaires

Hum je pense que l'horloge () renvoie une horloge_t qui représente une unité d'horloge. De plus sur Linux, il n'atteint pas une MS Precision Afaik


@neuro dans mon programme Linux, je reçois des valeurs doubles pour l'horloge ()



2
votes

Les minuteries haute résolution sont généralement GETTimeOdDay sur les plates-formes de style Linux et la QueryPerformEcanceCounter sur Windows.

Vous devez être conscient que la synchronisation de la durée d'une seule opération (même avec une minuterie haute résolution) ne donnera pas de résultats précis. Il y a trop de facteurs aléatoires en jeu. Pour obtenir des informations de synchronisation fiables, vous devez exécuter la tâche à programmer dans une boucle et calculer le temps de tâche moyen. Pour ce type de synchronisation, la fonction Horloge () devrait suffire.


0 commentaires

22
votes

Pour avoir une précision de millisecond, vous devez utiliser des appels système spécifiques à votre système d'exploitation.

in Linux, vous pouvez utiliser xxx

TIMEVAL a Precision microseconde.

sous Windows Vous pouvez utiliser: xxx

Bien sûr, vous pouvez utiliser boost pour le faire pour vous :)



2
votes

Si vous ne souhaitez pas utiliser de code spécifique au système d'exploitation, vous pouvez utiliser le package ACE qui fournit la fonction ace_os :: gettimeoDay fonction pour la plupart des systèmes d'exploitation standard. Par exemple: xxx

Ce code fonctionnera quel que soit votre système d'exploitation (tant que ACE prend en charge ce système d'exploitation).


0 commentaires

16
votes

// c ++ 11 style: xxx


0 commentaires

1
votes

in ubuntu 16.04 Ceci a fonctionné pour moi ... xxx

Puis, avec ... xxx

i get ... xxx


0 commentaires