Fonction d'horloge dans le langage C

Fonction d'horloge dans le langage C

Dans ce Indice de linux Article, nous allons vous montrer comment utiliser le horloge() fonction, l'une des ressources disponibles dans le langage C, pour mesurer les temps d'exécution d'un processus ou d'un thread particulier.

Bien que ces fractions de temps semblent insignifiantes, il existe des cas critiques où la capacité de mesurer et de calculer ces petites fractions de temps sont des facteurs critiques dans la précision du système ou du processus lui-même. Nous donnerons une description théorique de la façon dont horloge() fonctionne, expliquez son fonctionnement et les unités de mesure qu'il utilise à cet effet.

Ensuite, en utilisant des exemples pratiques qui incluent des fragments de code et des images, nous verrons comment vous pouvez implémenter cette fonction de manière claire et détaillée pour mesurer les temps critiques dans les processus en temps réel dans différents systèmes.

Clock () Syntaxe de fonction:

Clock_t Clock (void)

Horloge () Description de la fonction dans le langage C

La fonction horloge () est vide lorsqu'elle est appelée. Il ne contient aucun argument d'entrée et renvoie le nombre de tiques de l'horloge dans "Clock_t" au moment de l'appel.

Le nombre d'impulsions commence à zéro lorsque l'application est démarrée et se poursuit jusqu'à ce que l'utilisateur ou le système le sort, réinitialisant à zéro par débordement dans environ toutes les 72 minutes. La fonction horloge () ne modifie pas ou ne contrôle pas ce compteur; il n'obtient sa valeur que lorsqu'elle est appelée.

Pour mesurer le temps d'exécution total du programme, nous ne devons appeler l'horloge () qu'une seule fois à la fin du programme. Pour mesurer le temps écoulé d'un point du programme à un autre, nous devons appeler la fonction horloge () et calculer les deux données obtenues.

Le calcul pour déterminer les tiques écoulées entre deux appels du horloge() La fonction est effectuée en soustrayant le résultat du premier appel du résultat du deuxième appel. Examinons un exemple pour déterminer la quantité de temps écoulé d'un point du programme à un autre.

Le horloge() La fonction est définie dans «le temps.Fonctions d'en-tête h ”. Nous devons l'inclure dans notre «.c "ou".Fichier de code h ”, comme indiqué dans l'image suivante, afin de l'utiliser.

#inclure

Comment faire en sorte que l'horloge écoulée tire d'un point du programme à une autre avec la fonction horloge ()

Dans cet exemple, nous verrons comment obtenir le nombre de tiques écoulées d'un point du programme à un autre. Ces deux points correspondent à l'un des deux appels à la horloge() fonction, respectivement. Pour comprendre cela, voyons le code suivant:


#inclure
#inclure
vide main ()

Clock_t ticks_ini, ticks_end;
doubles tiques;
ticks_ini = horloge (); // Mesurez Start
printf ("ticks init me mesure% ld \ n", ticks_ini);
pour (int a = 0; a<=456450; a++);
ticks_end = horloge (); // Mesurer l'arrêt
ticks = ticks_end - ticks_ini;
printf ("Ticks End Mesure% ld \ n", ticks_end);
printf ("tiques écoulées entre la mesure% f \ n", tiques);
retour;

Tout d'abord, nous créons les deux variables, ticks_ini et ticks_end, dans lequel nous stockons le résultat de Clock () dans ses deux appels. Nous le calculons pour obtenir le nombre de tiques écoulées et l'entier tic, dans lequel nous stockons le résultat final du total des tiques écoulées.

Ensuite, nous appelons le horloge() fonction dans notre «principal» et récupérer l'horloge précédemment définie tire dans le ticks_ini variable qui s'est écoulée depuis le début du programme jusqu'au premier appel à cette fonction. Nous utilisons la fonction printf () pour afficher cette valeur.

Après ce retard, avec lequel nous avons créé pour, Nous appelons le horloge() fonction pour la deuxième fois pour obtenir le nombre de tiques jusqu'à ce point. Nous publions le résultat à l'écran avec la fonction printf (). Nous obtenons ensuite le résultat du nombre exact de tiques qui se sont écoulées entre les premier et deuxième appels à horloge() en soustrayant ticks_ini depuis ticks_end et stocker le résultat dans les tiques variables, que nous publions sur la console avec printf ().

De cette façon, nous obtenons les tiques qui se sont écoulées d'un point à un autre dans le code.

Comment convertir le nombre de tiques obtenues en secondes avec la fonction horloge ()

Une fois que nous avons le nombre de tiques qui se sont écoulées depuis le début du programme ou d'un point à un autre, nous pouvons convertir cette fois exprimée en tiques en secondes en divisant le résultat de l'exemple précédent par la constante prédéfinie dans le temps.H Horloges _Per_ Sec, Comme indiqué dans l'extrait suivant:

ticks = (ticks_end - ticks_ini) / (double) horloges_per_sec;
printf ("tiques écoulées en secondes entre la mesure% f \ n", tiques);

Conclusion

Dans ce Indice de linux Article, nous vous avons montré comment mettre en œuvre le horloge() fonction pour effectuer les mesures de temps dans les tiques de l'horloge système. Nous avons également expliqué comment vous pouvez mesurer tout ou partie de ces temps dans l'application en cours d'exécution. Nous vous avons montré comment convertir les résultats en secondes. Nous espérons que vous avez trouvé cet article utile. Vous pouvez trouver plus de conseils sur la langue C dans nos articles que vous pouvez trouver en utilisant le moteur de recherche du site Web.