본문 바로가기
프로그래밍 언어/C 언어

[C/C++] time(), clock()으로 실행시간 측정

by 까망 하르방 2021. 3. 19.
반응형

※ time(), clock() 함수를 사용하기 위해서는 <time.h> 파일을 include 한다.

time() 함수

#include <stdio.h>
#include <time.h>

int main() {
    int sum = 0;
    time_t start = time(NULL);
    
    for (int i = 0; i < 10000; i++)
        for (int j = 0; j < 10000; j++)
            sum += i * j;    
    
    time_t end = time(NULL);
    printf("소요시간: %lf\n", (double)(end - start));
}

- time(NULL) 함수를 이용한 방법으로 ms가 아닌 초(second) 단위로 측정.

* 소요시간은 실행할 때마다 다르게 측정될 수 있지만 PS에서 1억 Size (108)를 탐색할 때 1초 정도 소요.

 

 

clock() 함수

time() 함수와는 달리 ms 단위로 시간을 측정할 수 있다.

#include <stdio.h>
#include <time.h>

int main() {
    clock_t start = clock();
    
    int sum = 0;
    for (int i = 0; i < 10000; ++i)
        for(int j = 0; j < 10000; ++j)
            sum += 1;
    clock_t end = clock();
    printf("소요 시간: %lf\n", (double)(end - start) / CLOCKS_PER_SEC);
}

0.35초가 소요된 것을 확인할 수 있다.

(※ 측정 시간은 같은 코드라도 매번 다를 수 있다.)

 

Code 설명

① 필요한 헤더파일(.h)을 include 한다.

② 측정하고자 하는 시작 부분에서 clock()

③ 끝나는 위치에서 다시 clock()

④ CLOCKS_PER_SEC 나누어야 초 단위 (second)로 나온다.

CLOCKS_PER_SEC는 1초를 1000 Clock으로 정의한 것으로 time.h에 정의되어 있다.

함수명에서 F12 단축키로 쉽게 헤더파일을 열 수 있습니다. (49번째 줄에서 확인할 수 있다.)

이러한 시간 측정은 알고리즘 문제를 풀 때, 모듈별 병목구간 확인하는데 사용할 수 있다.

 

Reference

[알고리즘] 시간 성능 향상을 위한 코드 최적화 (C/C++)

[알고리즘] 알고리즘 문제에서 시간 복잡도는 어떻게 하는걸까?

[알고리즘] 코딩 테스트 문제 풀 때, 시간 복잡도 계산해보기  

정렬 알고리즘 비교

 

 

 

 

반응형

댓글