CLOCKS_PER_SEC
CLOCKS_PER_SEC
clock()이 돌려주는 값을 초 단위로 바꾸려면 무엇으로 나눠야 할까요? 그게 바로 CLOCKS_PER_SEC이에요. <time.h>에 정의된 매크로 상수예요.
출처: cppreference
본문
CLOCKS_PER_SEC는 clock_t 타입의 식으로 확장되는 매크로예요. 값은 1초당 클록 틱(clock tick)의 개수, 즉 clock()이 돌려주는 값의 단위를 나타내요. 반드시 컴파일 타임 상수일 필요는 없어요.
#define CLOCKS_PER_SEC /* implementation-defined */
clock()이 돌려준 틱 수를 초로 바꿀 때 이 상수로 나눠요.
double seconds = (double)(end - start) / CLOCKS_PER_SEC;
주의
- POSIX는
clock()의 실제 정밀도와 무관하게CLOCKS_PER_SEC를1'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 원문을 참고해요.