다음을 통해 공유


clock

호출 프로세스에서 사용하는 벽시계 시간을 계산합니다.

구문

clock_t clock( void );

반환 값

프로세스 시작 시 CRT 초기화 이후 경과된 시간으로, 초당 CLOCKS_PER_SEC 단위로 측정됩니다. 경과된 시간을 사용할 수 없거나 경과된 시간이 clock_t 형식으로 기록될 수 있는 최대 양수 시간을 초과한 경우 함수가 (clock_t)(-1) 값을 반환합니다.

설명

clock 함수는 프로세스 시작 중 CRT 초기화 이후 경과된 벽시계 시간을 알려 줍니다. 이 함수는 순 CPU 시간을 반환 값으로 지정하는 ISO C를 엄격하게 준수하지 않습니다. CPU 시간을 가져오려면 Win32 GetProcessTimes 함수를 사용합니다. 경과된 시간을 초 단위로 확인하려면 clock 함수에서 반환한 값을 CLOCKS_PER_SEC 매크로로 나눕니다.

충분한 시간을 가정하면 clock에서 반환한 값이 clock_t의 최대 양수 값을 초과할 수 있습니다. 프로세스가 더 길게 실행되면 clock에서 반환한 값은 ISO C99 표준(7.23.2.1) 및 ISO C11 표준(7.27.2.1)에 의해 지정된 대로 항상 (clock_t)(-1)입니다. Microsoft는 clock_t를 부호 있는 32비트 정수, long으로 구현하며 CLOCKS_PER_SEC 매크로가 1000으로 정의됩니다. 이 매크로는 최대 clock 함수 반환 값 2147483.647초 또는 약 24.8일을 제공합니다. 이 시간보다 오래 실행된 clock 프로세스에서 반환된 값에 의존하지 마세요. 64비 time 트 함수 또는 Windows QueryPerformanceCounter 함수를 사용하여 프로세스 경과 시간을 기록할 수 있습니다.

요구 사항

루틴에서 반환된 값 필수 헤더
clock <time.h>

호환성에 대한 자세한 내용은 호환성을 참조하세요.

예시

// 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

참고 항목

시간 관리
difftime, , _difftime32_difftime64
time, , _time32_time64