Obtention d'une mesure du temps de précision en millisecondes sous Linux
Lorsque vous travaillez avec des mesures de temps en C, la fonction clock() fournit une méthode pratique pour récupérer l'heure actuelle en millisecondes sur les systèmes Windows. Cependant, sous Linux, clock() peut fournir des résultats moins précis, arrondissant l'heure à la seconde la plus proche.
Dans ce cas, la solution consiste à utiliser l'en-tête et les fonctions standard sys/time.h. La fonction gettimeofday() renvoie l'heure actuelle sous la forme d'une structure timeval, qui contient à la fois les secondes et les microsecondes depuis l'époque. En soustrayant l'heure de début de l'heure de fin et en convertissant les microsecondes en millisecondes, nous pouvons obtenir des mesures de temps précises à la milliseconde.
Voici un exemple d'extrait de code qui montre comment utiliser gettimeofday() pour obtenir une mesure du temps précise à la milliseconde :
#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); // Sleep for 2 milliseconds 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, gettimeofday() est utilisé pour récupérer les heures de début et de fin. La différence entre les secondes et les microsecondes est calculée et le résultat est converti en millisecondes avec une précision allant jusqu'à 0,5 milliseconde.
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!