clock
Oblicza czas zegara ściany używany przez proces wywoływania.
Składnia
clock_t clock( void );
Wartość zwracana
Czas, który upłynął od momentu zainicjowania CRT na początku procesu, mierzony w CLOCKS_PER_SEC
jednostkach na sekundę. Jeśli czas, który upłynął, jest niedostępny lub przekroczył maksymalny dodatni czas, który można zarejestrować jako clock_t
typ, funkcja zwraca wartość (clock_t)(-1)
.
Uwagi
Funkcja clock
informuje, ile czasu zegara ściany minęło od momentu inicjowania CRT podczas uruchamiania procesu. Ta funkcja nie jest ściśle zgodna z normą ISO C, która określa czas procesora NET jako wartość zwracaną. Aby uzyskać czas procesora CPU, użyj funkcji Win32 GetProcessTimes
. Aby określić czas, który upłynął w sekundach, podziel wartość zwracaną przez funkcję przez clock
makro CLOCKS_PER_SEC
.
Biorąc pod uwagę wystarczająco dużo czasu, wartość zwrócona przez clock
wartość może przekroczyć maksymalną wartość dodatnią .clock_t
Gdy proces działa dłużej, wartość zwracana przez clock
wartość to zawsze (clock_t)(-1)
, zgodnie ze standardem ISO C99 (7.23.2.1) i standardem ISO C11 (7.27.2.1). Firma Microsoft implementuje clock_t
jako , podpisaną long
32-bitową liczbę całkowitą, a CLOCKS_PER_SEC
makro jest definiowane jako 1000. To makro daje maksymalną clock
wartość zwracaną przez funkcję 2147483,647 sekund lub około 24,8 dni. Nie należy polegać na wartości zwracanej przez clock
procesy, które działają dłużej niż ten czas. Można użyć funkcji 64-bitowej time
lub funkcji systemu Windows QueryPerformanceCounter
do rejestrowania procesu, który upłynął wiele lat.
Wymagania
Procedura | Wymagany nagłówek |
---|---|
clock |
<time.h> |
Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.
Przykład
// crt_clock.c
// This sample uses clock() to 'sleep' for three
// seconds, then determines how long it takes
// to execute an empty loop 600000000 times.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
// Pauses for a specified number of clock cycles.
void do_sleep( clock_t wait )
{
clock_t goal;
goal = wait + clock();
while( goal > clock() )
;
}
const long num_loops = 600000000L;
int main( void )
{
long i = num_loops;
clock_t start, finish;
double duration;
// Delay for a specified time.
printf( "Delay for three seconds\n" );
do_sleep( (clock_t)3 * CLOCKS_PER_SEC );
printf( "Done!\n" );
// Measure the duration of an event.
start = clock();
while( i-- )
;
finish = clock();
duration = (double)(finish - start) / CLOCKS_PER_SEC;
printf( "Time to do %ld empty loops is ", num_loops );
printf( "%2.3f seconds\n", duration );
}
Delay for three seconds
Done!
Time to do 600000000 empty loops is 1.354 seconds
Zobacz też
Zarządzanie czasem
difftime
, , _difftime32
_difftime64
time
, , _time32
_time64