I dette Linux hint artikkel, vi vil vise deg hvordan du bruker klokke() funksjon, en av ressursene som er tilgjengelige på C -språket, for å måle utførelsestidene for en bestemt prosess eller tråd.
Selv om disse tidsfraksjonene virker ubetydelige, er det kritiske tilfeller der evnen til å måle og beregne disse små brøkdelene av tid er kritiske faktorer i nøyaktigheten av systemet eller prosessen i seg selv. Vi vil gi en teoretisk beskrivelse av hvordan klokke() fungerer, forklar driften og måleenhetene den bruker for dette formålet.
Deretter, ved å bruke praktiske eksempler som inkluderer kodefragmenter og bilder, vil vi se hvordan du kan implementere denne funksjonen på en klar og detaljert måte å måle de kritiske tidene i sanntidsprosesser i forskjellige systemer.
Klokke () Funksjonssyntaks:
klokke_t klokke (tomrom)
Klokke () Funksjonsbeskrivelse på C -språk
Klokke () -funksjonen er tom når den kalles. Den inneholder ingen inngangsargumenter og returnerer antallet flått av klokken i “Clock_t” på tidspunktet for samtalen.
Pulstallet starter på null når applikasjonen startes og fortsetter til brukeren eller systemet kommer ut av den, og tilbakestiller til null med overløp i omtrent hvert 72 minutt. Klokke () -funksjonen endrer ikke eller har kontroll over denne telleren; det får bare verdien når den blir kalt.
For å måle den totale utførelsestiden for programmet, må vi kalle klokken () bare en gang på slutten av programmet. For å måle tiden som går fra et punkt i programmet til et annet, må vi ringe klokke () -funksjonen og beregne de to innhentede dataene.
Beregningen for å bestemme de forløpte flått mellom to samtaler av klokke() Funksjon gjøres ved å trekke fra resultatet av den første samtalen fra resultatet av den andre samtalen. La oss se på et eksempel for å bestemme mengden av den forløpte tiden fra et punkt i programmet til et annet.
De klokke() Funksjon er definert i “Tid.H ”headerfunksjoner. Vi må inkludere det i ".C ”eller“.h ”kodefil, som vist i følgende bilde, for å bruke den.
#inkludere
Hvordan få de forløpede klokkene fra ett punkt i programmet til et annet med klokke () -funksjonen
I dette eksemplet vil vi se hvordan vi kan få antall forløpte flått fra ett punkt i programmet til et annet. Disse to punktene tilsvarer en av de to samtalene til klokke() Funksjon, henholdsvis. For å forstå dette, la oss se følgende kode:
#inkludere
#inkludere
tomrom ()
clock_t ticks_ini, ticks_end;
doble flått;
ticks_ini = klokke (); // Mål start
printf ("ticks init measure %ld \ n", ticks_ini);
for (int a = 0; a<=456450; a++);
ticks_end = klokke (); // Mål stopp
Ticks = Ticks_end - Ticks_ini;
printf ("ticks end measure %ld \ n", ticks_end);
printf ("flått gikk mellom mål %f \ n", flått);
komme tilbake;
Først lager vi de to variablene, Ticks_ini og Ticks_end, der vi lagrer resultatet av klokke () i sine to samtaler. Vi beregner det for å få antall forløpte flått og heltall flått, der vi lagrer det endelige resultatet av det totale flått av flått.
Deretter kaller vi klokke() funksjon i vår "hoved" og hente de tidligere definerte klokken i Ticks_ini variabel som gikk siden starten av programmet til den første samtalen til denne funksjonen. Vi bruker printf () -funksjonen for å vise denne verdien.
Etter denne forsinkelsen, som vi opprettet med til, vi kaller klokke() Funksjon for andre gang for å få antall flått til dette punktet. Vi sender ut resultatet til skjermen med printf () -funksjonen. Vi får da resultatet av det nøyaktige antallet flått som gikk mellom den første og andre samtalen til klokke() ved å trekke fra Ticks_ini fra Ticks_end og lagrer resultatet i de variable flåttene, som vi sender ut til konsollen med printf ().
På denne måten får vi flåttene som gikk fra et punkt til et annet i koden.
Hvordan konvertere antall flått oppnådd til sekunder med klokke () -funksjonen
Når vi har antall flått som gikk siden programmet startet eller fra et punkt til et annet, kan vi konvertere denne gangen uttrykt i flått til sekunder ved å dele resultatet av det forrige eksemplet med den forhåndsdefinerte konstanten i tid.h Klokker _per_ sek, Som vist i følgende utdrag:
Ticks = (Ticks_end - Ticks_ini)/(dobbelt) Clocks_per_sec;
printf ("flått gikk i sekunder mellom mål %f \ n", flått);
Konklusjon
I dette Linux hint artikkel, vi viste deg hvordan du implementerer klokke() Funksjon for å gjøre tidsmålinger i flått av systemklokken. Vi forklarte også hvordan du kan måle hele eller deler av disse tider i løpet av den løpende applikasjonen. Vi viste deg hvordan du konverterer resultatene til sekunder. Vi håper at du fant denne artikkelen nyttig. Du kan finne flere tips om C -språket i artiklene våre som du kan finne ved hjelp av nettstedets søkemotor.