Maison > développement back-end > C++ > 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
Libérer: 2024-11-15 17:47:03
original
840 Les gens l'ont consulté

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>
    Copier après la connexion
  2. Définir une structure timeval pour stocker les secondes et les microsecondes :

    struct timeval start, end;
    Copier après la connexion
  3. Obtenez l'heure de début :

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

    usleep(2000);
    Copier après la connexion
  5. Obtenir l'heure de fin :

    gettimeofday(&end, NULL);
    Copier après la connexion
  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;
    Copier après la connexion
  7. Imprimez le temps écoulé en millisecondes :

    printf("Elapsed time: %ld milliseconds\n", mtime);
    Copier après la connexion

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!

source:php.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal