Maison > développement back-end > C++ > Comment puis-je obtenir une précision de temps en millisecondes sous Linux sans bibliothèques externes ?

Comment puis-je obtenir une précision de temps en millisecondes sous Linux sans bibliothèques externes ?

Linda Hamilton
Libérer: 2024-11-19 07:05:02
original
600 Les gens l'ont consulté

How Can I Get Millisecond Time Accuracy in Linux Without External Libraries?

Acquérir une milliseconde de temps sous Linux : une alternative à l'horloge()

En cherchant une précision au-delà des limites des secondes sous Linux, nous rencontrons la limitation de clock(), qui se rapproche seulement de la seconde la plus proche. Alors que les bibliothèques tierces comme Qt fournissent des solutions utilisant la classe QTime, aspirant à une approche plus fondamentale, nous explorons le domaine des outils C standard.

Pour atteindre une précision à la milliseconde, envisagez d'utiliser la fonction gettimeofday() du en-tête. Cette fonction renvoie une structure temporelle, capturant l'heure actuelle avec des composants en secondes et en microsecondes.

Considérez l'extrait de code suivant :

#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

Dans cet exemple, nous exploitons gettimeofday() pour capturer l'heure actuelle avant et après un délai de 2 millisecondes en utilisant usleep(). En soustrayant le temps initial du temps final, on obtient le temps écoulé en secondes et microsecondes. Pour convertir cela en millisecondes, nous multiplions les secondes par 1000 et les microsecondes par 1000,0 et les additionnons ensemble, garantissant une précision fractionnaire avec l'ajustement de 0,5.

Cette méthode offre une solution précise et standard pour obtenir des millisecondes en C sur Linux, éliminant le recours aux bibliothèques externes tout en maintenant la compatibilité entre diverses plates-formes.

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
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