프로그래밍을 하다보면 딜레이가 발생하거나해서 어느 부분이 느린지 알아내야 하는 경우가 생길 수 있습니다.

또는 알고리즘을 공부하다보면 내가 구현한 알고리즘의 속도를 알고싶을 때가 있습니다.

그럴때 특정 구간에 코드 실행시간을 알아야내야 하는 경우에 필요한 포스팅 입니다.

C언어, C++에서 프로그램 실행시간을 측정하는 방법은 두 가지가 있습니다.




1. time 함수를 이용한 방법

우선 time 함수를 이용한 방법 입니다.

time(NULL) 함수를 이용하여 받아옵니다.

단점은 ms단위가 아닌 초(s) 단위로 측정이 됩니다.

#include <time.h> 헤더파일을 포함시키고 아래와 같이 사용하시면 됩니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
#include <time.h>
 
int main() {
    time_t start, end;
    double result;
    int i, j;
    int sum = 0;
 
    start = time(NULL); // 시간 측정 시작
 
    for (i = 0; i < 100000; i++) {
        for (j = 0; j < 10000; j++) {
            sum += i * j;
        }
    }
 
    end = time(NULL); // 시간 측정 끝
    result = (double)(end - start);
    printf("%f", result); //결과 출력
    return 0;
}




2. clock 함수를 이용한 방법

clock 함수를 이용하여 앞에 방법의 단점을 해결하여 ms 단위로 시간을 측정 할 수 있습니다.
time 함수와 마찬가지로 include<time.h> 헤더 파일을 포함 시켜야 합니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
#include <time.h>
 
int main() {    
    clock_t start, end;
    double result;
    int i,j;
    int sum = 0;
 
    start = clock(); //시간 측정 시작
    
    for (i = 0; i < 100000; i++) {
        for (j = 0; j < 10000; j++) {
            sum += i * j;
        }
    }
 
    end = clock(); //시간 측정 끝
    result = (double)(end - start);
    printf("%f", result);
    return 0;
}



clock 함수는 아래와 같이 1초 1000 clock으로 정의되어 있습니다.
따라서 1clock은 1ms 입니다.
Visual studio 에서 clock 함수에서 F12를 누르면 아래와 같은 정의를 볼 수 있습니다.





Posted by 꿈만은공돌
,