반응형
'C로 배우는 알고리즘' 책 예제 중에서 알고리즘 성능 측정하는 부분이 있길래 찾아보았다.
책에는 터보 C의 biostime() 함수인가 여튼 헤더 파일 만들어서 쓰라고 되어있지만.
그 책은 20년전에 나온 것이니 발전이 없겠는가.
그래서 간단히 네이버 검색으로 찾아보았다.
1. time() 함수 이용
ㄱ. 일단 time.h 헤더 파일 include
ㄴ. time_t 타입의 변수로 두 개 선언(이름은 편리하게 start, end로)
ㄷ. 소스의 앞뒤로 time() 함수를 선언하고 매개변수로 위에 선언한 두 변수의 주소 값을 넣음
ㄹ. difftime() 함수로 경과 시간 구함
#include <stdio.h> #include <time.h> void main() { int i, sum; time_t start, end; time(&start); for(i = 0; i < 100; i++) { sum += i; } time(&end); printf("The sum is %d, elapse time : %f", sum, difftime(end, start)); }
이런 식으로 하면 된다.
근데 이제와서 이렇게 말하면 허무할 지도 모르겠지만 저 time() 함수는 초단위로만 계산한다.
엄청 큰 프로그램의 경우라면 나을 지도 모르겠지만(그런 사람들이 애초에 이걸 보고 있지 않을 거다.)
나 같이 예제나 치고 있을 사람들에겐 저건 너무 빠르다.
2. clock() 함수 이용
ㄱ. 일단 time.h 헤더 파일 include
ㄴ. clock_t 타입의 변수로 두 개 선언(이름은 편리하게 start, end로)
ㄷ. 소스의 앞뒤로 clock() 함수를 선언하고 매개변수로 위에 선언한 두 변수의 주소 값을 넣음
ㄹ. 뒤에 선언한 값에서 앞의 선언한 값을 빼고 이를 CLOCKS_PER_SEC으로 나눈다. 왜냐하면 clock_t는 CPU 클럭수 값을 나타내기에 이를 초당 클럭 수로 나눠주면 좀 더 정말한 초 값을 얻을 수 있다.
#include <stdio.h> #include <time.h> void main() { int i, sum; clock_t start, end; start = clock(); for(i = 0; i < 100; i++) { sum += i; } end = clock(); printf("The sum is %d, elapse time : %f", sum, (double) (end - start)/CLOCKS_PER_SEC); }
이렇게 하면 된다.
반응형