clock_t

clock_t

clock()이 돌려주는 프로세서 시간을 담는 타입이 뭘까요? 그게 바로 clock_t예요. <time.h>에 정의된 타입이에요.

출처: cppreference

본문

clock_t는 프로세스가 사용한 프로세서 시간을 표현할 수 있는 타입이에요. 범위와 정밀도는 구현에 따라 정의돼요.

  • C11 이전에는 산술(arithmetic) 타입이었고, C11부터는 실수(real) 타입으로 정의돼요.
typedef /* unspecified */ clock_t;

보통 clock()의 두 호출 결과를 담아 그 차이를 CLOCKS_PER_SEC로 나눠 초를 구하는 식으로 써요.

예시

clock() 전후의 clock_t 값을 재서 반복문이 쓴 CPU 시간을 초로 계산해요.

#include <stdio.h>
#include <time.h>
#include <math.h>

volatile double sink;
int main (void)
{
  clock_t start = clock();

  for(size_t i=0; i<3141592; ++i)
      sink+=sin(i);

  clock_t end = clock();
  double cpu_time_used = ((double) (end - start)) / CLOCKS_PER_SEC;

  printf("for loop took %f seconds to execute \n", cpu_time_used);
}

가능한 출력(예시):

for loop took 0.271828 seconds to execute

더 알아보기

  • 실제 프로세서 시간을 돌려주는 clock() 함수와 짝을 이뤄요.
  • 초당 클록 틱 수를 나타내는 CLOCKS_PER_SEC 상수도 함께 보면 좋아요.
  • cppreference의 clock_t 원문을 참고해요.