Acquérir une milliseconde de temps sous Linux : une alternative à l'horloge()
En cherchant une précision au-delà des limites des secondes sous Linux, nous rencontrons la limitation de clock(), qui se rapproche seulement de la seconde la plus proche. Alors que les bibliothèques tierces comme Qt fournissent des solutions utilisant la classe QTime, aspirant à une approche plus fondamentale, nous explorons le domaine des outils C standard.
Pour atteindre une précision à la milliseconde, envisagez d'utiliser la fonction gettimeofday() du
Considérez l'extrait de code suivant :
#include <sys/time.h> #include <stdio.h> #include <unistd.h> int main() { struct timeval start, end; long mtime, seconds, useconds; gettimeofday(&start, NULL); usleep(2000); gettimeofday(&end, NULL); seconds = end.tv_sec - start.tv_sec; useconds = end.tv_usec - start.tv_usec; mtime = ((seconds) * 1000 + useconds/1000.0) + 0.5; printf("Elapsed time: %ld milliseconds\n", mtime); return 0; }
Dans cet exemple, nous exploitons gettimeofday() pour capturer l'heure actuelle avant et après un délai de 2 millisecondes en utilisant usleep(). En soustrayant le temps initial du temps final, on obtient le temps écoulé en secondes et microsecondes. Pour convertir cela en millisecondes, nous multiplions les secondes par 1000 et les microsecondes par 1000,0 et les additionnons ensemble, garantissant une précision fractionnaire avec l'ajustement de 0,5.
Cette méthode offre une solution précise et standard pour obtenir des millisecondes en C sur Linux, éliminant le recours aux bibliothèques externes tout en maintenant la compatibilité entre diverses plates-formes.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!