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ą long32-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