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

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

Patricia Arquette
Patricia Arquetteoriginal
2024-12-20 12:25:10250parcourir

How Can I Accurately Measure Function Execution Time in C  ?

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

Contexte

Déterminer le temps d'exécution d'une fonction spécifique en C peut être crucial pour l’analyse et l’optimisation des performances. Linux natif offre des options limitées pour mesurer le temps avec précision, et la fonction process_user_cpu_clock de Boost.Chrono cible uniquement le temps utilisateur-CPU, sans englober la totalité du temps d'exécution de la fonction.

Une solution plus précise

Heureusement, C 11 a introduit une fonctionnalité polyvalente de mesure du temps via std::chrono::high_resolution_clock du en-tête. Cette horloge haute résolution fournit une mesure précise et complète du temps d'exécution de la fonction.

Exemple de code

#include <chrono>

/* Only for this example. */
#include <iostream>
#include <thread>

void long_operation() {
    /* Simulating a long, intensive operation. */
    using namespace std::chrono_literals;
    std::this_thread::sleep_for(150ms);
}

int main() {
    using std::chrono::high_resolution_clock;
    using std::chrono::duration_cast;
    using std::chrono::duration;
    using std::chrono::milliseconds;

    auto t1 = high_resolution_clock::now();
    long_operation();
    auto t2 = high_resolution_clock::now();

    /* Milliseconds as an integer. */
    auto ms_int = duration_cast<milliseconds>(t2 - t1);

    /* Milliseconds as a double. */
    duration<double, std::milli> ms_double = t2 - t1;

    std::cout << ms_int.count() << "ms\n";
    std::cout << ms_double.count() << "ms\n";
    return 0;
}

Cet extrait de code montre comment utiliser high_resolution_clock pour mesurer le durée de la fonction long_operation. Les variables t1 et t2 enregistrent les horodatages avant et après l'exécution de la fonction, et la différence est convertie en millisecondes pour l'affichage.

En utilisant cette technique, vous pouvez obtenir des mesures précises et cohérentes du temps d'exécution de la fonction, quel que soit le temps d'exécution de la fonction. Variations de charge du processeur, garantissant des évaluations de performances fiables.

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