Funkcija Clock() v jeziku C

Funkcija Clock V Jeziku C



V tem Namig za Linux članku vam bomo pokazali, kako uporabljati ura() funkcija, eden od virov, ki je na voljo v jeziku C, za merjenje časov izvajanja določenega procesa ali niti.

Čeprav se ti delčki časa zdijo nepomembni, obstajajo kritični primeri, ko je sposobnost merjenja in izračuna teh majhnih delčkov časa kritična dejavnika za natančnost sistema ali samega procesa. Podali bomo teoretični opis, kako ura() dela, pojasni njegovo delovanje in merske enote, ki jih za ta namen uporablja.







Nato bomo s praktičnimi primeri, ki vključujejo fragmente kode in slike, videli, kako lahko implementirate to funkcijo na jasen in podroben način za merjenje kritičnih časov v procesih v realnem času v različnih sistemih.



Sintaksa funkcije Clock():



clock_t ura ( praznina )





Opis funkcije Clock() v jeziku C

Funkcija clock() je ob klicu prazna. Ne vsebuje vhodnih argumentov in vrne število tiktaka ure v »clock_t« v času klica.

Štetje impulzov se začne pri nič, ko se aplikacija zažene, in se nadaljuje, dokler uporabnik ali sistem ne zapusti aplikacije, ponastavi pa se na nič s prelivom približno vsakih 72 minut. Funkcija clock() tega števca ne spreminja in nima nadzora nad njim; svojo vrednost dobi šele ob klicu.



Za merjenje celotnega časa izvajanja programa moramo clock() poklicati samo enkrat na koncu programa. Za merjenje časa, ki je pretekel od ene do druge točke programa, moramo poklicati funkcijo clock( ) in izračunati dva pridobljena podatka.

Izračun za določitev pretečenih tikkov med dvema klicema ura() funkcija se izvede tako, da se rezultat prvega klica odšteje od rezultata drugega klica. Oglejmo si primer za določitev količine pretečenega časa od ene točke programa do druge.

The ura() funkcija je definirana v funkcijah glave »time.h«. Vključiti ga moramo v kodno datoteko ».c« ali ».h«, kot je prikazano na naslednji sliki, da ga lahko uporabimo.

#include

Kako s funkcijo Clock() pridobiti pretečene tiktakte ure od ene točke v programu do druge

V tem primeru bomo videli, kako pridobiti število pretečenih kljukic od ene do druge točke v programu. Ti dve točki ustrezata enemu od dveh klicev v ura() funkcijo oz. Da bi to razumeli, si oglejmo to kodo:





#include

#include



void main ( )



{

ura_t ticks_ini, ticks_end;

dvojne kljukice;

ticks_ini = ura ( ) ; // začetek merjenja

printf ( 'kljukice init meri  %ld \n ' , ticks_ini ) ;

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



ticks_end = ura ( ) ; // meriti stop

ticks = ticks_end - ticks_ini;

printf ( 'označuje konec mere  %ld \n ' ,  ticks_end ) ;

printf ( 'tikov, ki so pretekli med meritvijo  %f \n ' ,  kljukice ) ;

vrnitev ;

}



Najprej ustvarimo dve spremenljivki, ticks_ini in ticks_end , v katerega shranimo rezultat clock() v njegovih dveh klicih. Izračunamo ga, da dobimo število pretečenih kljukic in celo število klopi , v katerega shranimo končni rezultat skupnih pretečenih tikov.

Nato pokličemo ura() funkcijo v naši »glavni« in pridobi predhodno definirane tiktke ure v ticks_ini spremenljivka, ki je pretekla od zagona programa do prvega klica te funkcije. Za prikaz te vrednosti uporabljamo funkcijo printf().

Po tej zamudi, s katero smo ustvarili za , imenujemo ura() funkcijo še drugič, da dobite število kljukic do te točke. Rezultat izpišemo na zaslon s funkcijo printf(). Nato dobimo rezultat natančnega števila kljukic, ki so pretekle med prvim in drugim klicem ura() z odštevanjem ticks_ini od ticks_end in shranjevanje rezultata v spremenljivko ticks, ki jo izpišemo na konzolo s printf().

Tako dobimo kljukice, ki so pretekle od ene do druge točke v kodi.

Kako pretvoriti dobljeno število tikkov v sekunde s funkcijo Clock().

Ko imamo število tiktov, ki so pretekli od začetka programa ali od ene točke do druge, lahko ta čas, izražen v tikih, pretvorimo v sekunde tako, da rezultat prejšnjega primera delimo z vnaprej določeno konstanto v času.h URE _PER_ SEK, kot je prikazano v naslednjem izrezku:

klopi = ( ticks_end - ticks_ini ) / ( dvojno ) CLOCKS_PER_SEC;

printf ( 'taktov, ki so pretekli v sekundah med meritvijo  %f \n ' ,  kljukice ) ;

Zaključek

V tem Namig za Linux članku smo vam pokazali, kako implementirati ura() funkcijo za merjenje časa v taktih sistemske ure. Pojasnili smo tudi, kako lahko merite vse ali del teh časov znotraj delujoče aplikacije. Pokazali smo vam, kako pretvorite rezultate v sekunde. Upamo, da vam je bil ta članek koristen. Več nasvetov o jeziku C najdete v naših člankih, ki jih lahko najdete z iskalnikom spletnega mesta.