수업시간에 시간 재는 법을 몰라서 애 먹었다 ㅜㅠ
(수업자료는 window버전만 제공해줌... 너무해)
Mac에서도 쓸 수 있는 CLOCKS_PER_SEC 방식을 찾았다.
#include <time.h>
int main(){
// 걸리는 시간 잴 때 필요한 함수
clock_t start, end; // 시작시간, 끝나는 시간
double cpuTimeUsed; // 총 걸린 시간
//시간재기 시작
start = clock();
/*
시간 잴 코드 넣기
*/
// 시간재기 끝
end = clock();
// 걸린 시간 계산
cpuTimeUsed = ((double)(end - start) / CLOCKS_PER_SEC);
// 걸린 시간 출력
printf("cputime = %.10lfs\n", cpuTimeUsed); //단위 : 초
}
start=clock();과 end=clock(); 사이에 시간 잴 코드를 넣어주면 된다 ㅎㅎ
clock() 함수란?
CPU가 사용한 시간을 측정할 수 있는 함수이다.
- <time.h> 헤더 파일에 정의됨
- 프로그램이 시작된 이후부터 clock()을 호출한 시점까지의 CPU 시간을 clock_t 타입으로 반환
-> 즉, clock()을 두 번 호출하고 그 차이를 구하면, 특정 코드 블록이 CPU를 얼마나 사용했는지 측정 가능
CLOCKS_PER_SEC란?
1초 동안 몇 번의 clock tick이 일어나는지를 나타내는 상수
- 대부분의 시스템에서는 1초 = 1,000,000 tick으로 정의
- 이 값으로 clock()의 반환값을 나누면 초(second) 단위로 변환 가능
ex)cpuTimeUsed = ((double)(end - start)) / CLOCKS_PER_SEC;
이렇게 계산하면 우리가 이해하기 쉬운 초 단위로 결과를 얻을 수 있음
주의)
clock()이 반환하는 값은 CPU 시간이기 때문에, 아주 짧은 코드에서는 정확도가 떨어질 수도 있다.