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