Clock() Funktion i C Language

Clock Funktion I C Language



I dette Linux tip artiklen, vil vi vise dig, hvordan du bruger ur() funktion, en af ​​de tilgængelige ressourcer i C-sproget, til at måle udførelsestiderne for en bestemt proces eller tråd.

Selvom disse brøkdele af tid virker ubetydelige, er der kritiske tilfælde, hvor evnen til at måle og beregne disse små brøkdele af tid er kritiske faktorer for selve systemets eller processens nøjagtighed. Vi vil give en teoretisk beskrivelse af hvordan ur() virker, forklare dens funktion og de måleenheder, den bruger til dette formål.







Derefter vil vi ved hjælp af praktiske eksempler, der inkluderer kodefragmenter og billeder, se, hvordan du kan implementere denne funktion på en klar og detaljeret måde for at måle de kritiske tider i realtidsprocesser i forskellige systemer.



Clock() funktionssyntaks:



ur_t ur ( ugyldig )





Clock() Funktionsbeskrivelse i C-sprog

Funktionen clock() er tom, når den kaldes. Den indeholder ingen input-argumenter og returnerer antallet af tikker på uret i 'clock_t' på tidspunktet for opkaldet.

Pulstællingen starter ved nul, når applikationen startes og fortsætter, indtil brugeren eller systemet forlader den, og nulstilles ved overløb ca. hvert 72. minut. Funktionen clock() ændrer eller har ikke kontrol over denne tæller; den får kun sin værdi, når den kaldes.



For at måle programmets samlede udførelsestid skal vi kun kalde clock() én gang i slutningen af ​​programmet. For at måle den tid, der er gået fra et punkt i programmet til et andet, skal vi kalde clock( )-funktionen og beregne de to opnåede data.

Beregningen for at bestemme det forløbne kryds mellem to opkald af ur() funktion udføres ved at trække resultatet af det første opkald fra resultatet af det andet opkald. Lad os se på et eksempel for at bestemme mængden af ​​den forløbne tid fra et punkt i programmet til et andet.

Det ur() funktion er defineret i 'time.h' header-funktioner. Vi skal inkludere det i vores '.c' eller '.h' kodefil, som vist på det følgende billede, for at kunne bruge det.

#include

Sådan får du det forløbne ur til at tikke fra ét punkt i programmet til et andet med funktionen Clock()

I dette eksempel vil vi se, hvordan man opnår antallet af forløbne krydser fra et punkt i programmet til et andet. Disse to punkter svarer til et af de to opkald til ur() funktion, hhv. For at forstå dette, lad os se følgende kode:





#include

#include



ugyldig hoved ( )



{

ur_t ticks_ini, ticks_end;

dobbelte flueben;

ticks_ini = ur ( ) ; // måle start

printf ( 'tikker ind i mål  %ld \n ' , ticks_ini ) ;

til ( int -en = 0 ; -en < = 456450 ; a++ ) ;



ticks_end = ur ( ) ; // måle stop

ticks = ticks_end - ticks_ini;

printf ( 'tikker slutmål  %ld \n ' ,  ticks_end ) ;

printf ( 'flåter forløbet mellem mål  %f \n ' ,  flueben ) ;

Vend tilbage ;

}



Først opretter vi de to variable, ticks_ini og ticks_end , hvor vi gemmer resultatet af clock() i dets to kald. Vi beregner det for at få antallet af forløbne kryds og heltal flåter , hvor vi gemmer det endelige resultat af de samlede forløbne flåter.

Så ringer vi til ur() funktion i vores 'main' og hent de tidligere definerede urtikker i ticks_ini variabel, der er forløbet siden starten af ​​programmet indtil det første kald til denne funktion. Vi bruger printf()-funktionen til at vise denne værdi.

Efter denne forsinkelse, som vi skabte med til , kalder vi ur() funktion for anden gang for at få antallet af kryds op til dette punkt. Vi udsender resultatet til skærmen med printf()-funktionen. Vi får så resultatet af det nøjagtige antal flueben, der er forløbet mellem første og andet opkald til ur() ved at trække fra ticks_ini fra ticks_end og lagring af resultatet i variable ticks, som vi udlæser til konsollen med printf().

På denne måde får vi de krydser, der er forløbet fra et punkt til et andet i koden.

Sådan konverteres antallet af opnåede krydser til sekunder med Clock()-funktionen

Når vi har det antal flueben, der er forløbet siden programmet startede eller fra et punkt til et andet, kan vi konvertere denne tid udtrykt i flueben til sekunder ved at dividere resultatet af det foregående eksempel med den foruddefinerede konstant i tid.h UR _PER_ SEC, som vist i følgende uddrag:

krydser = ( ticks_end - ticks_ini ) / ( dobbelt ) CLOCKS_PER_SEC;

printf ( 'flåter forløbet i sekunder mellem mål  %f \n ' ,  flueben ) ;

Konklusion

I dette Linux tip artikel, viste vi dig, hvordan du implementerer ur() funktion til at foretage tidsmålingerne i tikker på systemuret. Vi forklarede også, hvordan du kan måle alle eller dele af disse tider i den kørende applikation. Vi viste dig, hvordan du konverterer resultaterne til sekunder. Vi håber, at du fandt denne artikel nyttig. Du kan finde flere tips om C-sproget i vores artikler, som du kan finde ved hjælp af hjemmesidens søgemaskine.