Maison > développement back-end > C++ > Comment puis-je réaliser une mesure du temps à l'échelle nanométrique en C ?

Comment puis-je réaliser une mesure du temps à l'échelle nanométrique en C ?

DDD
Libérer: 2024-12-26 02:24:13
original
294 Les gens l'ont consulté

How Can I Achieve Nanoscale Time Measurement in C  ?

Fonction de minuterie C pour la mesure du temps en nanosecondes

Mesurer le temps d'exécution avec une précision nanométrique avec une fonction de classe C nécessite une minuterie qui offre une précision supérieure à celle de l'implémentation clock_t par défaut.

Le code fourni utilise le type clock_t pour mesurer le temps en secondes. Pour une précision à l'échelle nanométrique, vous avez besoin d'une implémentation alternative de la minuterie.

Linux (et BSD)

Utilisez clock_gettime() :

#include <sys/time.h>

int main() {
    timespec ts;
    clock_gettime(CLOCK_REALTIME, &ts);
    return 0;
}
Copier après la connexion

Windows

Utiliser QueryPerformanceCounter :

#include <windows.h>

int main() {
    LARGE_INTEGER freq, pc;
    QueryPerformanceFrequency(&freq);
    QueryPerformanceCounter(&pc);
    return 0;
}
Copier après la connexion

Considérations supplémentaires :

  • QueryPerformanceCounter peut parfois renvoyer des lectures anormales sur certains chipsets.
  • Windows 7 et versions ultérieures peuvent détecter si les processeurs ont un TSC invariant et passer à une minuterie externe si nécessaire. Cependant, la synchronisation des processeurs reste un problème défi.

Références :

  • [clock_gettime](https://linux.die.net/man/3/clock_gettime)
  • [QueryPerformanceCo sous](https://docs.microsoft.com/en-us/windows/win32/api/profileapi/nf-profileapi-queryperformancecounter)
  • [Haute résolution Horloges et minuteries pour Windows](http://performancebydesign.blogspot.com/2012/03/high-resolution-clocks-and-timers-for.html)

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