Maison >développement back-end >C++ >Comment puis-je mesurer avec précision le temps écoulé en C et C ?

Comment puis-je mesurer avec précision le temps écoulé en C et C ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-22 20:10:12760parcourir

How Can I Accurately Measure Elapsed Time in C and C  ?

Mesure efficace du temps écoulé en C et C

Mesurer le temps écoulé avec précision est crucial pour l'analyse des performances en programmation. Cependant, la fonction C standard time() peut ne pas être fiable pour les tâches de courte durée.

Utilisation de gettimeofday() en C

Pour résoudre ce problème, les programmeurs C peuvent utilisez la fonction gettimeofday(), qui renvoie l'heure actuelle avec une précision de la microseconde. Voici un exemple :

#include <sys/time.h>

struct timeval startTV, endTV;

gettimeofday(&startTV, NULL); // Start time

// Perform long-running tasks

gettimeofday(&endTV, NULL); // End time

time_t diffSeconds = endTV.tv_sec - startTV.tv_sec;
long diffMicroseconds = endTV.tv_usec - startTV.tv_usec;

printf("Time taken: %ld seconds, %ld microseconds\n", diffSeconds, diffMicroseconds);

Utilisation de std::chrono en C

En C , la bibliothèque std::chrono fournit une solution plus moderne et portable pour mesurer temps écoulé. Prenons cet exemple :

#include <chrono>

using namespace std::chrono;

auto begin = steady_clock::now(); // Start time

// Perform long-running tasks

auto end = steady_clock::now(); // End time

duration<double, nano> diff = end - begin;

cout << "Time taken: " << diff.count() << " nanoseconds" << endl;

Comprendre les résultats

La sortie de gettimeofday() et std::chrono renverra une différence de temps en secondes et microsecondes/ nanosecondes. Par exemple :

  • Temps pris : 4 secondes, 25 microsecondes (en utilisant gettimeofday())
  • Temps pris : 26 339 microsecondes (en utilisant std::chrono)

Dans le premier exemple, le temps écoulé est de 4,025 secondes, tandis que dans le second Par exemple, il s'agit de 0,026339 seconde. Notez que std::chrono renvoie les nanosecondes par défaut, vous devrez donc peut-être les convertir manuellement en microsecondes ou en secondes si vous le souhaitez.

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