clock - wyznaczanie czasu procesora
Standardowa biblioteka C (
libc,
-lc)
#include <time.h>
clock_t clock(void);
Funkcja
clock() zwraca przybliżoną ilość
czasu procesora wykorzystanego przez program.
Zwracana wartość to ilość czasu CPU wykorzystanego
do tej pory w formacie
clock_t. Aby otrzymać czas w sekundach,
należy podzielić go przez
CLOCKS_PER_SEC. Jeśli
informacja o wykorzystanym czasie procesora jest niedostępna lub
wartość tego czasu nie może zostać przedstawiona,
zwracana jest wartość
(clock_t) -1.
Informacje o pojęciach używanych w tym rozdziale można
znaleźć w podręczniku
attributes(7).
Interfejs |
Atrybut |
Wartość |
clock() |
Bezpieczeństwo wątkowe |
MT-Safe |
POSIX.1-2001, POSIX.1-2008, C99. XSI requires that
CLOCKS_PER_SEC equals
1000000 independent of the actual resolution.
Standard C dopuszcza nieokreśloną wartość na
początku programu. Aby zapewnić maksymalną
przenośność, należy odjąć od wyniku
funkcji wartość zwróconą przez
clock() na
początku programu.
Należy zauważyć, że zegar może się
przekręcić. W systemach 32-bitowych, gdzie
CLOCKS_PER_SEC
wynosi 1000000, funkcja ta będzie zwracać tę samą
wartość co około 72 minuty.
W niektórych innych implementacjach wartość zwracana przez
clock() zawiera również czasy procesów potomnych,
których kod zakończenia został odczytany za pomocą
wait(2) (lub innego programu typu "wait"). Linux nie
dołącza do wartości zwracanej
clock()
czasów procesów potomnych, na których zakończenie
oczekiwano. Funkcja
times(2), zwracająca (osobne) informacje o
procesie macierzystym i o jego potomkach, może być bardziej
pożądana.
W glibc 2.17 i wcześniejszych
clock() był implementowany za
pomocą
times(2). Aby zwiększyć
dokładność, od wersji glibc 2.18 jest implementowany za
pomocą
clock_gettime(2) (przy użyciu zegara
CLOCK_PROCESS_CPUTIME_ID).
clock_gettime(2),
getrusage(2),
times(2)
Autorami polskiego tłumaczenia niniejszej strony podręcznika
są: Adam Byrtek <
[email protected]>, Andrzej Krzysztofowicz
<
[email protected]>, Robert Luberda <
[email protected]> i
Michał Kułach <
[email protected]>
Niniejsze tłumaczenie jest wolną dokumentacją.
Bliższe informacje o warunkach licencji można uzyskać
zapoznając się z
GNU
General Public License w wersji 3 lub nowszej. Nie przyjmuje się
ŻADNEJ ODPOWIEDZIALNOŚCI.
Błędy w tłumaczeniu strony podręcznika prosimy
zgłaszać na adres listy dyskusyjnej
[email protected]