Maison  >  Article  >  développement back-end  >  Comment obtenir un timing précis à la milliseconde en C sous Linux sans bibliothèques externes ?

Comment obtenir un timing précis à la milliseconde en C sous Linux sans bibliothèques externes ?

DDD
DDDoriginal
2024-11-15 17:47:03771parcourir

How to Achieve Milliseconds-Precise Timing in C   on Linux Without External Libraries?

Timing précis en millisecondes en C sous Linux

Demandant à l'origine pourquoi clock() renvoie l'heure en millisecondes sous Windows mais seulement en secondes sous Linux , la personne qui pose la question cherche une solution pour obtenir une précision temporelle de l'ordre de la milliseconde sans recourir à des bibliothèques tierces comme Boost ou Qt.

Solution utilisant gettimeofday()

La solution consiste à exploiter la fonction gettimeofday() présente dans la bibliothèque C standard. Voici comment l'implémenter :

  1. Inclure les en-têtes nécessaires :

    #include <sys/time.h>
    #include <stdio.h>
    #include <unistd.h>
  2. Définir une structure timeval pour stocker les secondes et les microsecondes :

    struct timeval start, end;
  3. Obtenez l'heure de début :

    gettimeofday(&start, NULL);
  4. Spécifiez un délai en microsecondes à l'aide de usleep() (remplacez par le délai souhaité) :

    usleep(2000);
  5. Obtenir l'heure de fin :

    gettimeofday(&end, NULL);
  6. Calculer le temps écoulé :

    long mtime, seconds, useconds;    
    
    seconds  = end.tv_sec  - start.tv_sec;
    useconds = end.tv_usec - start.tv_usec;
    
    mtime = ((seconds) * 1000 + useconds/1000.0) + 0.5;
  7. Imprimez le temps écoulé en millisecondes :

    printf("Elapsed time: %ld milliseconds\n", mtime);

Cet extrait de code utilise gettimeofday() pour obtenir le temps en microsecondes, garantissant une précision de l'ordre de la milliseconde. Il constitue une solution robuste et standard pour acquérir des mesures de temps précises en C sous Linux.

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