Funkcja Clock() w języku C

Funkcja Clock W Jezyku C



W tym Wskazówka dotycząca Linuksa artykuł, pokażemy Ci, jak korzystać z zegar() funkcja, jeden z zasobów dostępnych w języku C, do mierzenia czasu wykonania określonego procesu lub wątku.

Chociaż te ułamki czasu wydają się nieistotne, istnieją krytyczne przypadki, w których zdolność do mierzenia i obliczania tych ułamków czasu jest krytycznymi czynnikami wpływającymi na dokładność samego systemu lub procesu. Podamy teoretyczny opis tego, jak to zrobić zegar() działa, wyjaśnij jego działanie i jednostki miary, których używa do tego celu.







Następnie na praktycznych przykładach zawierających fragmenty kodu i obrazy zobaczymy, jak w przejrzysty i szczegółowy sposób można zaimplementować tę funkcję, aby mierzyć czasy krytyczne w procesach czasu rzeczywistego w różnych systemach.



Zegar() Składnia funkcji:



zegar_t zegar ( próżnia )





Clock() Opis funkcji w języku C

Funkcja clock() jest pusta po wywołaniu. Nie zawiera argumentów wejściowych i zwraca liczbę taktów zegara w „clock_t” w momencie wywołania.

Zliczanie impulsów rozpoczyna się od zera w momencie uruchomienia aplikacji i trwa do momentu opuszczenia jej przez użytkownika lub system, resetując się do zera przez przepełnienie w przybliżeniu co 72 minuty. Funkcja clock() nie modyfikuje ani nie kontroluje tego licznika; uzyskuje swoją wartość tylko wtedy, gdy jest wywoływany.



Aby zmierzyć całkowity czas wykonania programu, musimy wywołać funkcję clock() tylko raz na końcu programu. Aby zmierzyć czas, jaki upłynął od jednego punktu programu do drugiego, musimy wywołać funkcję clock( ) i obliczyć dwie otrzymane dane.

Obliczenia mające na celu określenie liczby taktów, które upłynęły między dwoma wywołaniami zegar() funkcja jest wykonywana przez odjęcie wyniku pierwszego wywołania od wyniku drugiego wywołania. Spójrzmy na przykład, aby określić ilość czasu, jaki upłynął od jednego punktu programu do drugiego.

The zegar() funkcja jest zdefiniowana w funkcjach nagłówka „time.h”. Aby go użyć, musimy dołączyć go do naszego pliku kodu „.c” lub „.h”, jak pokazano na poniższym obrazku.

#include

Jak uzyskać upływające tyknięcia zegara z jednego punktu programu do drugiego za pomocą funkcji Clock().

W tym przykładzie zobaczymy, jak uzyskać liczbę taktów, które upłynęły z jednego punktu programu do drugiego. Te dwa punkty odpowiadają jednemu z dwóch wezwań do zegar() funkcja, odpowiednio. Aby to zrozumieć, spójrzmy na następujący kod:





#include

#include



pusta główna ( )



{

clock_t ticks_ini, ticks_end;

podwójne tyknięcia;

ticks_ini = zegar ( ) ; // początek miary

drukujf ( 'tyka init miara  %ld \n ' , ticks_ini ) ;

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



ticks_end = zegar ( ) ; // przystanek miarowy

ticks = ticks_end - ticks_ini;

drukujf ( 'zaznacza koniec miary %ld \n ' , koniec zaznaczenia ) ;

drukujf ( „taktów, które upłynęły między taktem  %f \n ' , kleszcze ) ;

zwrócić ;

}



Najpierw tworzymy dwie zmienne, ticks_ini oraz ticks_end , w którym zapisujemy wynik działania funkcji clock() w jej dwóch wywołaniach. Obliczamy to, aby uzyskać liczbę taktów, które upłynęły, i liczbę całkowitą kleszcze , w którym przechowujemy końcowy wynik sumy, które upłynęły.

Następnie dzwonimy do zegar() funkcję w naszym „głównym” i pobrać wcześniej zdefiniowane tyknięcia zegara w pliku ticks_ini zmienna, która upłynęła od uruchomienia programu do pierwszego wywołania tej funkcji. Do wyświetlenia tej wartości używamy funkcji printf().

Po tym opóźnieniu, z którym stworzyliśmy dla , nazywamy zegar() funkcję po raz drugi, aby uzyskać liczbę tyknięć do tego punktu. Wynik wyświetlamy na ekranie za pomocą funkcji printf(). Następnie otrzymujemy wynik dokładnej liczby tików, które upłynęły między pierwszym a drugim wywołaniem do zegar() przez odjęcie ticks_ini z ticks_end i zapisanie wyniku w zmiennej ticks, którą wysyłamy do konsoli za pomocą printf().

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

Jak przekonwertować liczbę uzyskanych tyknięć na sekundy za pomocą funkcji Clock().

Mając liczbę taktów, które upłynęły od uruchomienia programu lub od jednego punktu do drugiego, możemy ten czas wyrażony w taktach przeliczyć na sekundy, dzieląc wynik z poprzedniego przykładu przez określoną stałą w czasie.h ZEGARY _PER_ SEC, jak pokazano w poniższym fragmencie:

tyka = ( ticks_end - ticks_ini ) / ( podwójnie ) CLOCKS_PER_SEC;

drukujf ( „taktów, które upłynęły w sekundach między taktem %f \n ' , kleszcze ) ;

Wniosek

W tym Wskazówka dotycząca Linuksa artykule pokazaliśmy, jak zaimplementować zegar() funkcja dokonywania pomiarów czasu w taktach zegara systemowego. Wyjaśniliśmy również, w jaki sposób można mierzyć całość lub część tych czasów w uruchomionej aplikacji. Pokazaliśmy, jak przekonwertować wyniki na sekundy. Mamy nadzieję, że ten artykuł był dla Ciebie przydatny. Więcej wskazówek dotyczących języka C znajdziesz w naszych artykułach, które znajdziesz korzystając z wyszukiwarki serwisu.