CLOCKS_PER_SEC

CLOCKS_PER_SEC

clock()이 돌려주는 값을 초 단위로 바꾸려면 무엇으로 나눠야 할까요? 그게 바로 CLOCKS_PER_SEC이에요. <time.h>에 정의된 매크로 상수예요.

출처: cppreference

본문

CLOCKS_PER_SECclock_t 타입의 식으로 확장되는 매크로예요. 값은 1초당 클록 틱(clock tick)의 개수, 즉 clock()이 돌려주는 값의 단위를 나타내요. 반드시 컴파일 타임 상수일 필요는 없어요.

#define CLOCKS_PER_SEC /* implementation-defined */

clock()이 돌려준 틱 수를 초로 바꿀 때 이 상수로 나눠요.

double seconds = (double)(end - start) / CLOCKS_PER_SEC;

주의

  • POSIX는 clock()의 실제 정밀도와 무관하게 CLOCKS_PER_SEC1'000'000으로 정의해요.
  • C89에서 CLOCKS_PER_SEC로 표준화되기 전에는 IEEE std 1003.1-1988의 이름인 CLK_TCK로 알려진 적도 있어요. 그 이름은 C89에 포함되지 않았고, times 함수용인 _SC_CLK_TCK와 혼동될 수 있어 1996년에 POSIX에서도 제거됐어요.

더 알아보기

  • 원시 프로세서 시간을 돌려주는 clock() 함수와 짝을 이뤄요.
  • 프로세서 시간을 담는 타입 clock_t도 함께 보면 좋아요.
  • cppreference의 CLOCKS_PER_SEC 원문을 참고해요.