clock_t clock(void); 프로세스를 수행한 시점부터 얼마나 지났는지 확인하는 함수
입력 매개 변수 리스트
없음
반환 값
프로세스를 수행한 시점부터 흐른 시간 (단위는 clock)
clock 함수가 반환하는 시간은 프로세스를 수행한 시점부터 흐른 시간입니다. 이 때 단위는 clock으로 시스템마다 차이가 있습니다. 매크로 상수로 CLOCKS_PER_SEC를 통해 1clock이 어느 정도의 시간인지 알 수 있습니다.
사용 예
//C언어 표준 라이브러리 함수 가이드
//clock_t clock(void); 프로세스를 수행한 시점부터 얼마나 지났는지 확인하는 함수
//특정 알고리즘을 수행하는데 걸린 시간을 측정
#include <time.h>
#include <stdio.h>
int main(void)
{
clock_t st, et;
int i, j, k;
st = clock(); //시작 clock을 구함
for (i = 0; i<10; i++)
{
for (j = 0; j<1000; j++)
{
for (k = 0; k<1000; k++)
{
}
}
putchar('.');
}
et = clock();//종료 clock을 구함
printf("%d clocks (%d clocks/second)\n", et - st, CLOCKS_PER_SEC);
return 0;
}
출력
..........78 clocks (1000 clocks/second)
하노이 타워 수행 시간 측정
/* https://ehpub.co.kr C언어 표준 라이브러리 함수 가이드 clock_t clock(void); 프로세스를 수행한 시점부터 얼마나 지났는지 확인하는 함수 1초 = CLOCKS_PER_SEC CLOCK 실습: 하노이 타워 알고리즘을 수행하는데 걸린 시간을 측정 */ #include #include void Hanoi(int n, const char* src, const char* use, const char* dest); int main(void) { clock_t st, et; int costs[3] = { 0 }; for (int i = 0; i < 3; i++) { st = clock(); Hanoi(10 + i, "A", "B", "C"); et = clock(); costs[i] = et - st; } for (int i = 0; i < 3; i++) { printf("\nHanoi(%d)'s 수행 시간 %d clocks (1sec = %d clocks)\n", 10+i,costs[i], CLOCKS_PER_SEC); } return 0; } void Hanoi(int n, const char* src, const char* use, const char* dest) { if (n <= 0) { return; } Hanoi(n - 1, src, dest, use); printf("%s → %s\n", src, dest); Hanoi(n - 1, use, src, dest); }
실행 결과
앞쪽 실행 결과 생략... Hanoi(10)'s 수행 시간 986 clocks (1sec = 1000 clocks) Hanoi(11)'s 수행 시간 1960 clocks (1sec = 1000 clocks) Hanoi(12)'s 수행 시간 3985 clocks (1sec = 1000 clocks)