Maison >développement back-end >C++ >Comment puis-je mesurer avec précision le temps d'exécution du code en C ?

Comment puis-je mesurer avec précision le temps d'exécution du code en C ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-28 13:58:12935parcourir

How Can I Precisely Measure Code Execution Time in C  ?

Mesurer le temps d'exécution avec précision en C

Une mesure précise du temps d'exécution est essentielle pour optimiser les performances du code. En C , la fonction clock() fournit un moyen de calculer le temps écoulé. Cependant, il peut renvoyer des résultats peu fiables avec des extraits de code courts.

Limitations de clock()

Pour les petites entrées ou les instructions sur une seule ligne, clock() signale souvent l'exécution des temps de "0 seconde". Cet écart est dû au fait que la fonction clock() a une granularité de millisecondes ou de nanosecondes, selon le système. Pour les durées d'exécution plus courtes que cette granularité, clock() arrondit à zéro.

Solution : Utiliser GetTimeMs64()

Pour surmonter cette limitation, pensez à utiliser la fonction utilitaire GetTimeMs64(). Cette fonction mesure avec précision le temps écoulé depuis l'époque Unix, en millisecondes, et fonctionne sur les plates-formes Windows et Linux.

La fonction GetTimeMs64() utilise l'horloge système sous Windows à l'aide de GetSystemTimeAsFileTime(). Sous Linux, il utilise gettimeofday() pour récupérer l'heure actuelle. Il convertit les valeurs obtenues en millisecondes et soustrait le décalage de l'époque Unix pour s'aligner sur la norme horaire Unix.

Implémentation

Pour utiliser GetTimeMs64(), incluez simplement le code suivant dans votre programme :

#include <Windows.h>
// or
#include <sys/time.h>
#include <ctime>

uint64 GetTimeMs64()
{
    // Code from provided solution goes here
}

Pour calculer le temps d'exécution d'un code extrait :

  1. Appelez GetTimeMs64() avant d'exécuter le code.
  2. Exécutez le code.
  3. Appelez à nouveau GetTimeMs64() après avoir exécuté le code.
  4. Soustrayez la première fois de la deuxième fois pour obtenir le temps écoulé en millisecondes.

Exemple d'utilisation :

uint64 startTime = GetTimeMs64();
// Your code here
uint64 endTime = GetTimeMs64();
cout << "Execution time: " << (endTime - startTime) / 1000.0 << " seconds" << endl;

Cette méthode fournit des mesures précises du temps d'exécution, même pour de petits extraits de code ou des instructions courtes. Il permet aux développeurs d'optimiser leur code efficacement et d'évaluer avec précision les améliorations de performances.

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