52 votes

Obtenir un horodatage en C en microsecondes ?

Comment obtenir un horodatage de microsecondes en C ?

J’essaie de faire :

Mais cela renvoie une valeur absurde que si j’obtiens deux horodatages, le second peut être plus petit ou plus grand que le premier (le second devrait toujours être plus grand). Serait-il possible de convertir l’entier magique renvoyé par gettimeofday en un nombre normal avec lequel on peut réellement travailler ?

59voto

unwind Points 181987

Vous devez également ajouter dans les secondes:

Notez que cela ne durera qu’environ 2<sup>32</sup>/ 10<sup>6</sup> = ~ 4295 secondes, soit environ 71 minutes (sur un système 32 bits typique).

25voto

Robᵩ Points 50501

Vous avez deux choix pour obtenir un horodatage de la microseconde. Le premier (et le meilleur) choix est d’utiliser le `` type directement:

Le deuxième choix, et pour moi moins souhaitable, est de construire un uint64_t à partir d’un `` :

8voto

janneb Points 17303

struct timeval contient deux composants, le second et la microseconde. Un horodatage avec une précision de l’ordre de la microseconde est représenté en secondes puisque l’époque stockée dans le champ tv_sec et les fractions de microsecondes dans tv_usec. Ainsi, vous ne pouvez pas simplement ignorer tv_sec et attendre des résultats raisonnables.

Si vous utilisez Linux ou *BSD, vous pouvez utiliser timersub() pour soustraire deux valeurs de struct timeval, ce qui peut être ce que vous voulez.

7voto

Ciro Santilli Points 3341

`` à partir de C11

Renvoie avec une précision allant jusqu’à quelques nanosecondes, arrondie à la résolution de l’implémentation.

Plus de détails ici: https://stackoverflow.com/a/36095407/895245

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X