Maison > développement back-end > C++ > Comment obtenir un timing précis à la milliseconde en C sous Linux sans compter sur clock() ?

Comment obtenir un timing précis à la milliseconde en C sous Linux sans compter sur clock() ?

Barbara Streisand
Libérer: 2024-11-13 12:15:02
original
408 Les gens l'ont consulté

 How to Achieve Millisecond Precision Timing in C   on Linux Without Relying on 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;
}
Copier après la connexion

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal