Maison >développement back-end >C++ >Comment obtenir une mesure du temps précise à la milliseconde sous Linux ?

Comment obtenir une mesure du temps précise à la milliseconde sous Linux ?

DDD
DDDoriginal
2024-11-13 10:58:02920parcourir

How to Achieve Millisecond Precision Time Measurement in Linux?

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!

Déclaration:
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