C Programmēšana

Kā lietot gettimeofday funkciju C valodā?

Kā lietot gettimeofday funkciju C valodā?
The gettimeofday () funkcija iegūst sistēmas pulksteņa laiku. Pašreizējais laiks tiek izteikts pagājušajās sekundēs un mikrosekundēs kopš 1970. gada 1. janvāra pulksten 00:00:00 (Unix laikmets). Šajā rakstā mēs parādīsim, kā lietot gettimeofday () funkcija Linux. Tātad, sāksim darbu.

Sintakse

int gettimeofday (struktūras laiks * tp, strukturēta laika josla * tz)

The gettimeofday () funkcija ir definēta sys / laiks.h galvenes fails.

Argumenti

Šai funkcijai ir divi argumenti:

1sv arguments norāda uz laiks struktūru. The laiks struktūra ir deklarēta šādi sys / laiks.h galvenes fails:

struktūras laiks
time_t tv_sec; // izmanto sekundes
suseconds_t tv_usec; // lieto mikrosekundēs

Strukturālā laika struktūra apzīmē kalendāra laiku. Tajā ir divi dalībnieki:

2nd arguments norāda uz laika zona struktūru. Parasti tam vajadzētu būt NULL, jo strukturēta laika josla ir novecojis. Šis arguments attiecas tikai uz savietojamību atpakaļ.

Atgriezties vērtības

Pēc panākumiem gettimeofday () atgriešanās 0, neveiksmes gadījumā funkcija atgriež -1.

Vienkārši iegūstiet laiku un izdrukājiet

# iekļaut
# iekļaut
int main ()
struct timeval current_time;
gettimeofday (& pašreizējais_laiks, NULL);
printf ("sekundes:% ld \ nm mikrosekundes:% ld",
pašreizējais laiks.tv_sec, current_time.tv_usec);
atgriešanās 0;

Izeja:

Šeit, sys / laiks.h ir iekļauts gettimeofday () funkcija un laika struktūra. The gettimeofday () funkcija nosaka laiku laika (pašreizējais_laiks) struktūras loceklim. tv_sec ir kopējais sekunžu skaits, kas pagājis kopš programmas sākuma UNIX laikmets, pusnaktī pēc UTC 1970. gada 1. janvārī un tv_usec ir papildu mikrosekundu skaits, kas pagājis no tv_sec. Ja palaižat programmu, jums vajadzētu redzēt izvadi. Katru reizi, kad palaižat programmu, izeja mainīsies.

NULL argumenta kļūda

# iekļaut
# iekļaut
int main ()
 
struct timeval current_time;
gettimeofday (NULL, NULL);
atgriešanās 0;

Izeja:

Šajā piemērā parādīts pirmais gettimeofday () funkcijai nevajadzētu būt NULL. Kompilācijas brīdinājums notiks, ja pirmais arguments ir NULL.

Pašreizējā laika formatēšanas piemērs

# iekļaut
# iekļaut
# iekļaut
int main ()
struct laika televīzija;
laiks_t t;
struct tm * info;
char buferis [64];
 
gettimeofday (& tv, NULL);
t = tv.tv_sec;
info = vietējais laiks (& t);
printf ("% s", faktiskais laiks (informācija));
strftime (buffer, sizeof buffer, "Šodien ir% A,% B% d.\ n ", informācija);
printf ("% s", buferis);
strftime (buffer, sizeof buffer, "Laiks ir% I:% M% p.\ n ", informācija);
printf ("% s", buferis);
atgriešanās 0;

Izeja:

Šajā piemērā parādīts, kā drukāt datumu un laiku citā formātā. Nav ļoti viegli attēlot datumus no gettimeofday () funkciju . Šeit, vietējais laiks() un strftime () funkcijas tiek izmantotas, lai labi attēlotu gettimeofday ().

The vietējais laiks() Funkcija aizņem argumentu, kas ir atsauce uz tv_sec joma struktūras laiks un atgriež atsauci uz a rādītāju struct tm objekts.

The strftime () funkcija ģenerēs personalizētu, formatētu virkni, kurā parādīts datums un laiks no struct tm rādītājs. Formatētie attēlošanai tiek izmantoti formāta specifikatori. Piemēram, formāta virkne “% d-% m-% Y% H:% M:% S” šādā formā norāda datumu un laiku:

14.04.2014 13:09:42

Formatētajam attēlojumam var izmantot šādus reklāmguvumu parametrus:

Specifikators Nozīme
% a Nedēļas dienas saīsinātais nosaukums atbilstoši pašreizējai lokalizācijai.
% A Nedēļas dienas nosaukums atbilstoši pašreizējai lokalizācijai.
% b Saīsinātā mēneša nosaukums atbilstoši pašreizējai lokalizācijai.
% B Pilna mēneša nosaukums atbilstoši pašreizējai lokalizācijai.
% c Vēlamais datuma un laika attēlojums pašreizējai lokalizācijai.
% d Kā decimālskaitlis mēneša dienai (diapazons no 01 līdz 31).
% H Izmantojot decimāldaļu, 24 stundas (diapazons no 00 līdz 23) līdz stundai.
% Es Izmantojot decimāldaļu skaitli 12 stundas (diapazons no 00 līdz 23) līdz stundai.
% j Kā decimālskaitlis gada dienai (diapazons 001–366).
% m Kā decimālskaitlis mēnesim (diapazons 01–12).
% M Minūtes cipars aiz komata.
% lpp Pamatojoties uz norādīto laika vērtību, “am” vai “pm” vai līdzvērtīgas virknes pašreizējai lokalizācijai.
% S Sekundes decimālskaitlis.
% x Vēlamais pašreizējās lokalizācijas datuma attēlojums, bet bez laika.
% X Vēlamais pašreizējās lokalizācijas laika attēlojums, bet bez datuma.
% y Gads ir aiz komata, bet nav gadsimta (diapazons no 00 līdz 99).
% Y Gads ir decimālskaitlis, ieskaitot gadsimtu.
% Z Laika josla.

Izmantojot gettimeofday, lai izmērītu programmas izpildes laiku

# iekļaut
# iekļaut
 
int main ()
 
struktūras laika sākums, beigas;
gettimeofday (& start, NULL);
 
par (int i = 0; i <1e5 ; i++)

 
gettimeofday (& end, NULL);
printf ("Laiks, kas nepieciešams skaitīšanai līdz 10 ^ 5, ir:% ld mikro sekundes \ n",
((beigas.tv_sec * 1000000 + beigas.tv_usec) -
(sākt.tv_sec * 1000000 + sākums.tv_usec)));
atgriešanās 0;

Izeja:

Šis piemērs parāda, kā gettimeofday () funkciju var izmantot, lai aprēķinātu programmas izpildes laiku.

Secinājums

Tādā veidā gettimeofday () funkciju var izmantot Linux. Lai pārnestu esošu kodu, gettimeofday () Var izmantot funkciju, bet jaunajā kodā to nevajadzētu izmantot. clock_gettime ()  funkcijas vietā var izmantot gettimeofday ().

Bezmaksas un atvērtā koda spēļu dzinēji Linux spēļu izstrādei
Šis raksts aptvers bezmaksas un atvērtā koda spēļu motoru sarakstu, kurus var izmantot, lai izstrādātu 2D un 3D spēles Linux. Šādu spēļu dzinēju ir da...
Tomb Raider for Linux apmācība
Tomb Raider ēna ir divpadsmitais papildinājums Tomb Raider sērijai - darbības piedzīvojumu spēļu franšīzei, kuru izveidoja Eidos Montreal. Spēli gan k...
Kā palielināt FPS Linux?
FPS apzīmē Kadri sekundē. FPS uzdevums ir izmērīt kadru ātrumu video atskaņošanā vai spēļu izrādēs. Vienkāršos vārdos nepārtrauktu pilnekrāna attēlu s...