Funkcja zegara w języku C

Funkcja zegara w języku C

W tym Wskazówka Linux Artykuł, pokażemy, jak korzystać z zegar() funkcja, jeden z zasobów dostępnych w języku C, do pomiaru czasów wykonywania określonego procesu lub wątku.

Chociaż te ułamki czasu wydają się nieistotne, istnieją krytyczne przypadki, w których zdolność do pomiaru i obliczania tych niewielkich frakcji czasu są kluczowymi czynnikami w dokładności systemu lub samego procesu. Podamy teoretyczny opis tego, jak zegar() działa, wyjaśnij jego działanie i jednostki pomiaru, którego używa do tego celu.

Następnie, stosując praktyczne przykłady zawierające fragmenty kodu i obrazy, zobaczymy, w jaki sposób możesz zaimplementować tę funkcję w jasny i szczegółowy sposób pomiaru krytycznych czasów w procesach w czasie rzeczywistym w różnych systemach.

CLOCK () Składnia funkcji:

zegar clock_t (void)

Clock () Opis funkcji w języku C

Funkcja clock () jest pusta, gdy jest wywoływana. Nie zawiera żadnych argumentów wejściowych i zwraca liczbę kleszczy zegara w „clock_t” w momencie połączenia.

Liczba impulsów zaczyna się od zera, gdy aplikacja zostanie uruchomiona i trwa do momentu wyjścia przez użytkownika lub systemu, resetując do zera przez przepełnienie około 72 minut. Funkcja clock () nie modyfikuje ani nie ma kontroli nad tym readą; otrzymuje swoją wartość tylko po wywołaniu.

Aby zmierzyć całkowity czas realizacji programu, musimy wywołać clock () tylko raz na końcu programu. Aby zmierzyć czas upływający z jednego punktu programu do drugiego, musimy wywołać funkcję clock () i obliczyć dwa uzyskane dane.

Obliczenia w celu ustalenia zawartości kleszczy między dwoma wezwaniami zegar() Funkcja odbywa się poprzez odejmowanie wyniku pierwszego wywołania od wyniku drugiego połączenia. Przyjrzyjmy się przykładowi, aby określić ilość upływu czasu od jednego punktu programu do drugiego.

zegar() Funkcja jest zdefiniowana w „czasie.Funkcje nagłówka H ”. Musimy to uwzględnić w naszym „.c ”lub„.H ”plik kodu, jak pokazano na poniższym obrazku, aby go użyć.

#włączać

Jak zdobyć klejek zegara z jednego punktu w programie do drugiego z funkcją clock ()

W tym przykładzie zobaczymy, jak uzyskać liczbę upływających kleszczy z jednego punktu w programie do drugiego. Te dwa punkty odpowiadają jednemu z dwóch wezwań do zegar() odpowiednio funkcja. Aby to zrozumieć, zobaczmy następujący kod:


#włączać
#włączać
void main ()

clock_t ticks_ini, ticks_end;
podwójne kleszcze;
ticks_ini = clock (); // mierz start
printf („kleszki init Meason %ld \ n”, ticks_ini);
for (int a = 0; a<=456450; a++);
ticks_end = clock (); // zmierz stop
ticks = ticks_end - ticks_ini;
printf („miara końcowa kleszcze %ld \ n”, ticks_end);
printf („kleszcze upłynęły między miarą %f \ n”, kleszcz);
powrót;

Najpierw tworzymy dwie zmienne, kicks_ini I ticks_end, w którym przechowujemy wynik Clock () w dwóch połączeniach. Obliczamy to, aby uzyskać liczbę minowych kleszczy i liczbę całkowitą kleszcze, w którym przechowujemy ostateczny wynik całkowitego minięcia kleszczy.

Następnie nazywamy zegar() funkcja w naszym „głównym” i odzyskaj wcześniej zdefiniowane kleszcze zegara w kicks_ini zmienna, która upłynęła od początku programu do pierwszego wywołania tej funkcji. Używamy funkcji printf (), aby wyświetlić tę wartość.

Po tym opóźnieniu, z którym stworzyliśmy Do, nazywamy zegar() Funkcja po raz drugi, aby uzyskać liczbę kleszczy do tego momentu. Wynik o ekranie z funkcją printf (). Następnie otrzymujemy wynik dokładnej liczby kleszczy, które upłynęły między pierwszym a drugim połączeniem zegar() przez odejmowanie kicks_ini z ticks_end i przechowywanie wyniku w kleszkach zmiennych, które wyprowadzamy do konsoli z printf ().

W ten sposób otrzymujemy kleszcze, które upłynęły od jednego punktu do drugiego w kodzie.

Jak przekonwertować liczbę kleszczy uzyskanych na sekundy za pomocą funkcji clock ()

Po otrzymaniu liczby kleszczy, które upłynęły od rozpoczęcia programu lub od jednego punktu do drugiego, możemy przekonwertować tym razem wyrażony w kleszkach na sekundy, dzieląc wynik poprzedniego przykładu przez predefiniowaną stałą w czasie.H Zegary _per_ s, Jak pokazano w poniższym fragmencie:

ticks = (ticks_end - ticks_ini)/(double) clocks_per_sec;
printf („kleszcze upłynęły w sekundach między miarą %f \ n”, kleszcz);

Wniosek

W tym Wskazówka Linux Artykuł, pokazaliśmy, jak wdrożyć zegar() funkcja, aby dokonać pomiarów czasowych w kleszkach zegara systemu. Wyjaśniliśmy również, w jaki sposób możesz zmierzyć całość lub część tych czasów w uruchomionej aplikacji. Pokazaliśmy, jak przekonwertować wyniki na sekundy. Mamy nadzieję, że ten artykuł uznałeś. W naszych artykułach można znaleźć więcej wskazówek dotyczących języka c.