Maison > développement back-end > C++ > Pourquoi `time()` renvoie-t-il parfois la même valeur avant et après une courte tâche ?

Pourquoi `time()` renvoie-t-il parfois la même valeur avant et après une courte tâche ?

Susan Sarandon
Libérer: 2025-01-03 15:07:40
original
289 Les gens l'ont consulté

Why Does `time()` Sometimes Return the Same Value Before and After a Short Task?

Mesurer facilement le temps écoulé

Question :

Lors de la mesure du temps écoulé dans un programme utilisant time(), pourquoi les valeurs avant et après pourraient-elles rester les mêmes ? pareil ?

Explication :

time() renvoie l'heure actuelle en secondes depuis l'époque. Si la période de temps à mesurer est courte, la différence entre les valeurs avant et après peut être trop petite pour être détectée.

Solution :

Pour mesurer avec précision une courte période périodes, envisagez d'utiliser des méthodes alternatives :

C Structured Time Mesure :

struct timeval startTV, endTV;
gettimeofday(&startTV, NULL); 
// Execute time-consuming tasks
gettimeofday(&endTV, NULL); 

timersub(&endTV, &startTV, &diff);
printf("**time taken = %ld %ld\n", diff.tv_sec, diff.tv_usec);
Copier après la connexion
  • la structure timeval représente une valeur temporelle avec une précision allant jusqu'à la microseconde.
  • gettimeofday() obtient l'heure actuelle de la journée.
  • timersub() calcule la différence entre deux structures timeval.
  • Le résultat est rapporté en secondes (diff.tv_sec) et microsecondes (diff.tv_usec).

Mesure du temps de précision de style C 11 :

#include <chrono>

std::chrono::steady_clock::time_point begin = std::chrono::steady_clock::now();
// Execute time-consuming tasks
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;
Copier après la connexion
  • std :: la bibliothèque chrono fournit une heure de haute précision mesure.
  • std::chrono::steady_clock mesure le temps depuis un moment arbitraire inconnu.
  • La différence de temps est calculée comme un objet std::chrono::duration, qui peut être converti en microsecondes ou nanosecondes.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal