Laikrodžio () funkcija C kalba

Laikrodzio Funkcija C Kalba



Šiame Linux patarimas Straipsnyje parodysime, kaip naudotis laikrodis() funkcija, vienas iš išteklių, galimų C kalba, išmatuoti konkretaus proceso ar gijos vykdymo laiką.

Nors šios laiko dalys atrodo nereikšmingos, yra kritinių atvejų, kai gebėjimas išmatuoti ir apskaičiuoti šias mažas laiko dalis yra esminiai veiksniai, lemiantys pačios sistemos ar proceso tikslumą. Pateiksime teorinį aprašymą, kaip laikrodis() darbus, paaiškinti jo veikimą ir šiuo tikslu naudojamus matavimo vienetus.







Tada, naudodamiesi praktiniais pavyzdžiais, kuriuose yra kodo fragmentų ir vaizdų, pamatysime, kaip galite aiškiai ir išsamiai įgyvendinti šią funkciją, kad išmatuotų kritinius laikus realiojo laiko procesuose įvairiose sistemose.



Laikrodžio() funkcijos sintaksė:



laikrodis_t laikrodis ( tuštuma )





Clock() Funkcijos aprašymas C kalba

Iškviečiama funkcija clock() tuščia. Jame nėra įvesties argumentų ir skambučio metu pateikiamas laikrodžio tikslių skaičius „clock_t“.

Impulsų skaičiavimas prasideda nuo nulio, kai programa paleidžiama, ir tęsiasi tol, kol vartotojas arba sistema iš jos išeina, iš naujo nustatomas iki nulio dėl perpildymo maždaug kas 72 minutes. Funkcija clock() nekeičia ir nekontroliuoja šio skaitiklio; ji įgyja savo vertę tik tada, kai ją iškviečia.



Norėdami išmatuoti bendrą programos vykdymo laiką, clock() turime iškviesti tik vieną kartą programos pabaigoje. Norėdami išmatuoti laiką, praėjusį nuo vieno programos taško iki kito, turime iškviesti funkciją clock( ) ir apskaičiuoti du gautus duomenis.

Skaičiavimas, skirtas nustatyti, kiek laiko praėjo tarp dviejų skambučių laikrodis() funkcija atliekama atimant pirmojo skambučio rezultatą iš antrojo skambučio rezultato. Pažiūrėkime į pavyzdį, kaip nustatyti, kiek laiko praėjo nuo vieno programos taško iki kito.

The laikrodis() funkcija yra apibrėžta antraštės „time.h“ funkcijose. Kad galėtume jį naudoti, turime įtraukti jį į „.c“ arba „.h“ kodo failą, kaip parodyta toliau pateiktame paveikslėlyje.

#include

Kaip perkelti laikrodžio tiksėjimą iš vieno programos taško į kitą naudojant laikrodžio () funkciją

Šiame pavyzdyje pamatysime, kaip gauti iš vieno programos taško į kitą pasibaigusių varnelių skaičių. Šie du taškai atitinka vieną iš dviejų skambučių į laikrodis() funkcija, atitinkamai. Norėdami tai suprasti, pažiūrėkime šį kodą:





#include

#include



tuščias pagrindinis ( )



{

clock_t ticks_ini, ticks_end;

dvigubos erkės;

ticks_ini = laikrodis ( ) ; // matavimo pradžia

printf ( 'tiks pradinis matas  %ld \n , tiks_ini ) ;

dėl ( tarpt a = 0 ; a < = 456450 ; a++ ) ;



ticks_end = laikrodis ( ) ; // išmatuoti sustojimą

ticks = ticks_end - ticks_ini;

printf ( 'varneles baigia matuoti  %ld \n , tiks_pabaiga ) ;

printf ( 'erkės praėjo tarp matavimo %f \n ,  varnelės ) ;

grąžinti ;

}



Pirmiausia sukuriame du kintamuosius, tiks_ini ir erkės_pabaiga , kuriame saugome clock() rezultatą dviejuose jo iškvietimuose. Apskaičiuojame jį, kad gautume praėjusių varnelių skaičių ir sveikąjį skaičių erkės , kuriame išsaugome galutinį viso prabėgusių erkių rezultatą.

Tada mes vadiname laikrodis() funkcija mūsų „pagrindiniame“ ir iškviesti anksčiau apibrėžtus laikrodžio rodmenis tiks_ini kintamasis, kuris praėjo nuo programos pradžios iki pirmojo šios funkcijos iškvietimo. Šiai reikšmei rodyti naudojame funkciją printf().

Po šio delsimo, kurį sukūrėme su dėl , mes vadiname laikrodis() funkcija antrą kartą, kad gautų erkių skaičių iki šio taško. Rezultatą išvedame į ekraną naudodami printf() funkciją. Tada gauname tikslaus varnelių skaičiaus, praėjusio tarp pirmojo ir antrojo skambučio, rezultatą laikrodis() atimant tiks_ini erkės_pabaiga ir išsaugome rezultatą kintamajame varnele, kurią išvedame į konsolę su printf().

Tokiu būdu gauname varneles, kurios praėjo nuo vieno taško iki kito kode.

Kaip konvertuoti gautų žymėjimų skaičių į sekundes naudojant Clock() funkciją

Kai turėsime žymėjimų skaičių, praėjusį nuo programos pradžios arba nuo vieno taško iki kito, šį laiką, išreikštą žymėmis, galime konvertuoti į sekundes, padalydami ankstesnio pavyzdžio rezultatą iš iš anksto nustatytos konstantos laike.h LAIKRODŽIAI _PER_ SEK, kaip parodyta sekančiame fragmente:

erkės = ( tiks_pabaiga - tiks_ini ) / ( dvigubai ) CLOCKS_PER_SEC;

printf ( 'erkės praėjo sekundėmis tarp matavimo  %f \n ,  varnelės ) ;

Išvada

Šiame Linux patarimas Straipsnyje mes parodėme, kaip įgyvendinti laikrodis() funkcija, leidžianti matuoti laiką pagal sistemos laikrodžio rodykles. Taip pat paaiškinome, kaip galite išmatuoti visą arba dalį šių laikų veikiančioje programoje. Mes parodėme, kaip konvertuoti rezultatus į sekundes. Tikimės, kad šis straipsnis jums buvo naudingas. Daugiau patarimų apie C kalbą rasite mūsų straipsniuose, kuriuos galite rasti naudodami svetainės paieškos variklį.