Maison >développement back-end >C++ >Comment obtenir un timing précis à la milliseconde en C sous Linux sans compter sur clock() ?
C : Comment obtenir des millisecondes sous Linux sans les limitations de Clock()
Contrairement à Windows où clock() renvoie des millisecondes, l'implémentation de Linux arrondit le résultat au millier près, ce qui donne uniquement une précision de deuxième niveau. Le besoin d'un timing au niveau de la milliseconde soulève la question : existe-t-il une solution C standard sans utiliser de bibliothèques tierces ?
La réponse : gettimeofday()
La réponse réside dans la fonction POSIX standard gettimeofday(). Cette fonction fournit des informations de synchronisation de haute précision en remplissant une structure temporelle avec l'heure actuelle. Voici un exemple en C utilisant gettimeofday() :
#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; }
Ce code montre comment calculer le temps écoulé en millisecondes en combinant les composants secondes et microsecondes obtenus à partir de gettimeofday(). A noter que l'addition de 0,5 est appliquée pour arrondir le résultat à l'entier le plus proche.
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!