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

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

Patricia Arquette
Patricia Arquetteoriginal
2024-12-30 15:41:10538parcourir

How Can I Accurately Measure Elapsed Time in C  ?

Mesurer facilement le temps écoulé

Pour mesurer avec précision le temps écoulé des segments de programme, des alternatives sont disponibles à la fonction time(), moins précise.

Utiliser gettimeofday()

Comme montré dans le code fourni, gettimeofday() offre une précision de minuterie jusqu'à la microseconde. En calculant la différence entre une mesure de l'heure de début et de fin, vous pouvez obtenir des valeurs de temps écoulé.

Interprétation des résultats

Interprétation de la valeur temporelle :

  • temps pris = 0 26339 :Représente 26 339 microsecondes, soit environ 26,339 millisecondes.
  • temps pris = 4 45025 :Représente 4 secondes et 45,025 millisecondes.

Approche C 11

Une approche plus moderne et précise utilise le C 11 library:

  • std::chrono::steady_clock::now() : récupère l'heure actuelle avec une précision de la nanoseconde.
  • duration_cast : Convertit le décalage horaire dans l'unité souhaitée (par exemple, microsecondes ou nanosecondes).

Exemple de code

// C++11 Style:
#include <chrono>

std::chrono::steady_clock::time_point begin = std::chrono::steady_clock::now();
std::chrono::steady_clock::time_point end = std::chrono::steady_clock::now();

std::cout << "Time difference = " << std::chrono::duration_cast<std::chrono::microseconds>(end - begin).count() << "[µs]" << std::endl;
std::cout << "Time difference = " << std::chrono::duration_cast<std::chrono::nanoseconds>(end - begin).count() << "[ns]" << std::endl;

Ce code calcule la différence de temps en microsecondes et en nanosecondes, offrant des mesures plus précises que time() ou gettimeofday().

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