CLOCK |
Horloge |
---|---|
Langage C++ | ctime (time.h) |
Syntaxe
clock_t clock(void); |
Description
Cette fonction indique le temps que l'ordinateur a utilisé depuis le début de son exécution.
Remarques
- La fonction clock() renvoie une valeur correspondant approximativement à la durée pendant laquelle le programme appelant a été exécuté. Pour transformer cette valeur en secondes, divisez-la par CLOCKS_PER_SEC. Une valeur de -1 est renvoyée si l'heure n'est pas disponible.
- Unité de mesure des tics : La fonction clock() retourne le nombre de tics écoulés depuis le démarrage du programme. Cependant, l'unité d'un tic n'est pas forcément une milliseconde ou une microseconde. Pour obtenir le temps en secondes, il faut diviser par CLOCKS_PER_SEC, une constante définie dans <ctime>.
- Précision variable selon l'implémentation : La précision de clock() dépend de l'implémentation et du système d'exploitation. Sous Windows, elle est généralement de l'ordre de 10 à 15 millisecondes, tandis que sous Linux, elle peut être plus précise si le système utilise une horloge haute résolution.
- Ne mesure que le temps du microprocesseur du processus : Contrairement à d'autres fonctions comme std::chrono::steady_clock::now(), clock() mesure uniquement le temps du microprocesseur consommé par le programme et non le temps réel écoulé. Si le programme est mis en pause ou en attente d'entrée, clock() ne reflétera pas ce délai.
- Inadapté aux mesures de temps réel : Si vous souhaitez mesurer la durée exacte d'une opération, clock() peut ne pas être fiable, car il est influencé par l'utilisation du microprocesseur et peut manquer de précision. Il est souvent recommandé d'utiliser std::chrono::high_resolution_clock pour obtenir une mesure plus fine.
- Valeur initiale et débordement possible : La valeur retournée par clock() commence généralement à 0 lorsque le programme démarre. Toutefois, comme elle est entreposée sous forme d'un entier, il existe un risque de débordement si le programme tourne très longtemps. Ce risque est réduit en C++ moderne, où clock_t est souvent un entier de grande taille.
- Différences avec les systèmes Unix : Sur les systèmes Unix/Linux, clock() mesure uniquement le temps du microprocesseur consommé par le processus. En revanche, sous Windows, la fonction peut renvoyer le temps total écoulé si elle est mal interprétée. Cela peut mener à des différences entre plateformes lorsqu'on mesure les performances.
- Inclusion et compatibilité : clock() est défini dans l'entête <ctime> (ou <time.h> en C). Il fait partie de la bibliothèque standard C, ce qui signifie qu'il est disponible aussi bien en C qu'en C++. Cependant, son utilisation en C++ moderne est généralement déconseillée au profit de std::chrono.
- Comparaison avec std::chrono : Bien que clock() ait longtemps été utilisé pour mesurer des durées, std::chrono de C++11 offre des alternatives plus précises et plus flexibles. std::chrono::steady_clock ou std::chrono::high_resolution_clock sont plus adaptés pour mesurer les intervalles de temps sans être affectés par les changements de l'horloge système.
Exemple
Voici quelques exemples typiques de l'utilisation de cette fonction :

on obtiendra le résultat suivant :
Temps écoulé = 0 millisecondesVoir également
Langage de programmation - C++ - Référence de procédures et fonctions - time
Langage de programmation - C - Référence de procédures et fonctions - clock
Références
Langage C, Edition Micro-Application, Gehard Willms, 2001, ISBN: 2-7429-2008-0, page 731.
Borland C++ for Windows 4.0, Library Reference, Edition Borland, 1993, Part # BCP1240WW21772, page 52.
Dernière mise à jour : Lundi, le 3 août 2015