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
Libérer: 2024-12-22 20:10:12
original
777 Les gens l'ont consulté

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);
Copier après la connexion

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;
Copier après la connexion

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