Funkcia Clock() v jazyku C

Funkcia Clock V Jazyku C



V tomto Linuxová rada článku, ukážeme vám, ako používať hodiny() funkcia, jeden zo zdrojov dostupných v jazyku C, na meranie časov vykonávania konkrétneho procesu alebo vlákna.

Aj keď sa tieto časti času zdajú byť nevýznamné, existujú kritické prípady, keď schopnosť merať a vypočítať tieto malé časti času sú kritickými faktormi v presnosti systému alebo samotného procesu. Dáme teoretický popis ako hodiny() vysvetlite jeho fungovanie a jednotky merania, ktoré na tento účel používa.







Potom pomocou praktických príkladov, ktoré zahŕňajú fragmenty kódu a obrázky, uvidíme, ako môžete túto funkciu implementovať jasným a podrobným spôsobom na meranie kritických časov v procesoch v reálnom čase v rôznych systémoch.



Syntax funkcie Clock():



clock_t hodiny ( neplatné )





Popis funkcie Clock() v jazyku C

Funkcia clock() je pri volaní prázdna. Neobsahuje žiadne vstupné argumenty a vracia počet tikov hodín v „clock_t“ v čase volania.

Počítanie impulzov začína na nule pri spustení aplikácie a pokračuje, kým ju užívateľ alebo systém neopustí, pričom sa vynuluje pretečením približne každých 72 minút. Funkcia clock() nemení ani nemá kontrolu nad týmto počítadlom; svoju hodnotu získa až po zavolaní.



Aby sme zmerali celkový čas vykonávania programu, musíme zavolať clock() iba raz na konci programu. Na meranie času, ktorý uplynie z jedného bodu programu do druhého, musíme zavolať funkciu clock() a vypočítať dva získané údaje.

Výpočet na určenie uplynutých časov medzi dvoma volaniami hodiny() funkcia sa vykonáva odčítaním výsledku prvého hovoru od výsledku druhého hovoru. Pozrime sa na príklad na určenie množstva uplynutého času z jedného bodu programu do druhého.

The hodiny() funkcia je definovaná vo funkciách hlavičky „time.h“. Aby sme ho mohli použiť, musíme ho zahrnúť do nášho súboru s kódom „.c“ alebo „.h“, ako je znázornené na nasledujúcom obrázku.

#include

Ako dostať uplynuté hodiny z jedného bodu v programe do druhého pomocou funkcie Clock().

V tomto príklade uvidíme, ako získať počet uplynutých tikov z jedného bodu programu do druhého. Tieto dva body zodpovedajú jednej z dvoch výziev hodiny() funkciu, resp. Aby sme to pochopili, pozrime sa na nasledujúci kód:





#include

#include



neplatný hlavný ( )



{

clock_t ticks_ini, ticks_end;

dvojité začiarknutie;

ticks_ini = hodiny ( ) ; // merať začiatok

printf ( 'Tcks init measure  %ld \n ' , ticks_ini ) ;

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



ticks_end = hodiny ( ) ; // merať stop

ticks = ticks_end - ticks_ini;

printf ( 'zaškrtnutia konca opatrenia  %ld \n ' ,  ticks_end ) ;

printf ( 'uplynuli tikety medzi meraním  %f \n ' ,  kliešte ) ;

vrátiť ;

}



Najprv vytvoríme dve premenné, ticks_ini a ticks_end , v ktorom uložíme výsledok clock() v jeho dvoch volaniach. Vypočítame to, aby sme dostali počet uplynutých tikov a celé číslo kliešte , do ktorého ukladáme konečný výsledok celkových uplynutých tikov.

Potom zavoláme hodiny() fungovať v našom „hlavnom“ a načítať predtým definované hodiny hodín v ticks_ini premenná, ktorá uplynula od spustenia programu do prvého volania tejto funkcie. Na zobrazenie tejto hodnoty používame funkciu printf().

Po tomto oneskorení, ktoré sme vytvorili s pre , nazývame hodiny() zapnite druhýkrát, aby ste získali počet kliešťov do tohto bodu. Výsledok vypíšeme na obrazovku pomocou funkcie printf(). Potom dostaneme výsledok presného počtu tiknutí, ktoré uplynuli medzi prvým a druhým volaním hodiny() odčítaním ticks_ini od ticks_end a uloženie výsledku do premennej ticks, ktoré vypíšeme do konzoly pomocou printf().

Týmto spôsobom dostaneme kliešte, ktoré prešli z jedného bodu do druhého v kóde.

Ako previesť počet získaných tikov na sekundy pomocou funkcie Clock().

Keď máme počet tikov, ktoré uplynuli od spustenia programu alebo z jedného bodu do druhého, môžeme tento čas vyjadrený v tikoch previesť na sekundy vydelením výsledku z predchádzajúceho príkladu preddefinovanou konštantou v čase.h HODINY _PER_ SEC, ako je uvedené v nasledujúcom úryvku:

kliešte = ( ticks_end - ticks_ini ) / ( dvojitý ) CLOCKS_PER_SEC;

printf ( 'uplynulý počet sekúnd medzi meraním  %f \n ' ,  kliešte ) ;

Záver

V tomto Linuxová rada článku sme vám ukázali, ako implementovať hodiny() funkcia na vykonanie meraní času v tikátoch systémových hodín. Vysvetlili sme tiež, ako môžete merať všetky alebo časť týchto časov v rámci spustenej aplikácie. Ukázali sme vám, ako previesť výsledky na sekundy. Dúfame, že tento článok bol pre vás užitočný. Ďalšie tipy týkajúce sa jazyka C nájdete v našich článkoch, ktoré nájdete pomocou vyhľadávača na webovej stránke.