Funció Clock() en llenguatge C

Funcio Clock En Llenguatge C



En aquest Pista de Linux article, us mostrarem com utilitzar el rellotge () funció, un dels recursos disponibles en el llenguatge C, per mesurar els temps d'execució d'un procés o fil determinat.

Tot i que aquestes fraccions de temps semblen insignificants, hi ha casos crítics en què la capacitat de mesurar i calcular aquestes petites fraccions de temps són factors crítics en la precisió del sistema o procés en si. Farem una descripció teòrica de com rellotge () treballa, expliqueu-ne el funcionament i les unitats de mesura que utilitza per a aquesta finalitat.







A continuació, utilitzant exemples pràctics que inclouen fragments de codi i imatges, veurem com es pot implementar aquesta funció de manera clara i detallada per mesurar els temps crítics en processos en temps real en diferents sistemes.



Sintaxi de la funció Clock():



clock_t rellotge ( buit )





Descripció de la funció Clock() en llenguatge C

La funció clock() està buida quan es crida. No conté arguments d'entrada i retorna el nombre de ticks del rellotge a “clock_t” en el moment de la trucada.

El recompte de polsos comença a zero quan s'inicia l'aplicació i continua fins que l'usuari o el sistema en surt, restablint-se a zero per desbordament en aproximadament cada 72 minuts. La funció clock() no modifica ni té control sobre aquest comptador; només obté el seu valor quan es diu.



Per mesurar el temps total d'execució del programa, només hem de cridar al clock() una vegada al final del programa. Per mesurar el temps transcorregut d'un punt del programa a un altre, hem de cridar la funció clock( ) i calcular les dues dades obtingudes.

El càlcul per determinar els ticks transcorreguts entre dues trucades del rellotge () La funció es fa restant el resultat de la primera crida del resultat de la segona crida. Vegem un exemple per determinar la quantitat de temps transcorregut d'un punt a un altre del programa.

El rellotge () La funció es defineix a les funcions de capçalera 'time.h'. L'hem d'incloure al nostre fitxer de codi “.c” o “.h”, tal com es mostra a la imatge següent, per utilitzar-lo.

#inclou

Com aconseguir les tictacs del rellotge transcorregut d'un punt del programa a un altre amb la funció Clock().

En aquest exemple, veurem com obtenir el nombre de ticks transcorreguts d'un punt a un altre del programa. Aquests dos punts corresponen a una de les dues convocatòries a la rellotge () funció, respectivament. Per entendre-ho, vegem el codi següent:





#inclou

#inclou



buit principal ( )



{

clock_t ticks_ini, ticks_end;

dobles ;

ticks_ini = rellotge ( ) ; // inici de la mesura

imprimirf ( 'ticks init mesure  %ld \n ' , ticks_ini ) ;

per ( int a = 0 ; a < = 456450 ; a++ ) ;



ticks_end = rellotge ( ) ; // mesura parada

ticks = ticks_end - ticks_ini;

imprimirf ( 'marca final de mesura  %ld \n ' ,  ticks_end ) ;

imprimirf ( 'han transcorregut les marques entre la mesura  %f \n ' ,  paparres ) ;

tornar ;

}



Primer, creem les dues variables, ticks_ini i ticks_end , en què emmagatzemem el resultat de clock() en les seves dues crides. Ho calculem per obtenir el nombre de ticks transcorreguts i el nombre sencer paparres , on emmagatzemem el resultat final del total de ticks transcorreguts.

Aleshores, anomenem el rellotge () funcionar a la nostra 'principal' i recuperar les tictacs de rellotge definides anteriorment al ticks_ini variable que ha transcorregut des de l'inici del programa fins a la primera crida a aquesta funció. Utilitzem la funció printf() per mostrar aquest valor.

Després d'aquest retard, amb el qual vam crear per , anomenem el rellotge () funció per segona vegada per obtenir el nombre de ticks fins a aquest punt. Sortim el resultat a la pantalla amb la funció printf(). Aleshores obtenim el resultat del nombre exacte de ticks que ha transcorregut entre la primera i la segona trucada a rellotge () en restar ticks_ini des de ticks_end i emmagatzemar el resultat a les variables ticks, que fem sortir a la consola amb printf().

D'aquesta manera, obtenim les paparres que han transcorregut d'un punt a un altre del codi.

Com convertir el nombre de ticks obtinguts en segons amb la funció Clock().

Un cop tenim el nombre de ticks transcorreguts des que es va iniciar el programa o d'un punt a un altre, podem convertir aquest temps expressat en ticks a segons dividint el resultat de l'exemple anterior per la constant predefinida en el temps.h RELLOTGES _PER_ SEC, tal com es mostra al fragment següent:

paparres = ( ticks_end - ticks_ini ) / ( doble ) CLOCKS_PER_SEC;

imprimirf ( 'les tictacs han transcorregut en segons entre la mesura  %f \n ' ,  paparres ) ;

Conclusió

En aquest Pista de Linux article, us vam mostrar com implementar el rellotge () funció per fer les mesures de temps en ticks del rellotge del sistema. També us vam explicar com podeu mesurar tots o part d'aquests temps dins de l'aplicació en execució. Us vam mostrar com convertir els resultats en segons. Esperem que aquest article us sigui útil. Podeu trobar més consells sobre el llenguatge C als nostres articles que podeu trobar mitjançant el cercador del lloc web.