티스토리 뷰

 

프로그래밍을 하다보면 시간을 측정하고 현재 시간을 출력해야 하는 상황이 종종 존재합니다.

이번에는 그러한 상황에 쓰일 수 있는 함수들을 알아보도록 하겠습니다.

 

먼저 이번 글에서는 수행시간을 측정하는 방법을 사용해보도록 하겠습니다.

 

먼저 실행 시간을 측정하는 방법은 아래와 같이 가지 방법이 존재합니다.

 

 

 

 

 

 

 

1. time() 이용

 

time() 함수를 이용하게 되면 Unix 운영체제가 공식 출시한 1970년 01월 01일 0시 0분 0초를 기점으로 현재까지 흐른 시간을 초(s) 단위로 나타냅니다.

 

#include<time.h> 헤더파일을 포함시키고 다음과 같이 사용합니다.

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

int main() {
	time_t start, end;
    double result;
    
    
    start = time(NULL);			// time(NULL)을 통해서 현재 시간 반환
    
    //수행시킬 코드
    
    end = time(NULL);
    result = (double)(end-start);
    
    cout << "수행 시간 : " << result << "second" << "\n";
    
    return 0;
}

time() 함수를 이용한 방법은 초(s) 단위로 측정됩니다.

 

 

 

 

1. clock() 이용

 

clock() 방법을 이용하게 되면 time() 함수로는 구하지 못한 ms(millisecond) 단위로 시간 측정이 가능합니다.

해당 방법 역시 time() 과 마찬가지로 #include 헤더파일을 포함시켜 줍니다.

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

int main() {
	clock_t start, end;
    double result;
    
    
    start = clock();			// 현재 시간 반환
    
    //수행시킬 코드
    
    end = clock();
    result = (double)(end-start);
    
    cout << "수행 시간 : " << result << "millisecond" << "\n";
    
    
    /*
    millisecond가 아니라 second로 출력하고 싶다면 "CLOCKS_PER_SEC"를 이용해주면 된다.
     cout << "수행 시간 : " << ((result) / CLOCKS_PER_SEC) << "second" << "\n";
    */
    
    return 0;
}

해당 방법에서는 ms단위로 나오기 때문에 초(s) 로 나타내고자 한다면 CLOCKS_PER_SEC 로 나누어 주면 됩니다.

 

 

 

 

참고자료 : https://eehoeskrap.tistory.com/261

참고자료 : https://zoosso.tistory.com/792

참고자료 : https://coding-factory.tistory.com/668

 

 

 

 

 

 


+) ms단위보다 조금 더 세밀한 단위로 측정하고 싶다면 chrono 라이브러리를 이용하면 됩니다.

chrono를 이용하여 측정하게 되면 milliseconds 뿐 아니라 microseconds, nanoseconds도 측정이 가능합니다.

 

chrono를 사용하기위해서는 #include <chrono> 를 사용해 헤더파일을 추가해주어야 합니다.

 

#include <chrono>
#include <iostream>

using namespace std;
using namespace chrono;

int main()

{
    system_clock::time_point start_time = system_clock::now(); // 코드 시작 시간

	/* 수행시키고자 하는 코드 */
    
    system_clock::time_point end_time = system_clock::now(); //코드 종료 시간

	
    /* 시간 계산 (종료 - 시작) */
    nanoseconds nano = end_time - start_time;
    microseconds micro = duration_cast<microseconds>(end_time - start_time);
    milliseconds mill = duration_cast<milliseconds>(end_time - start_time);
    seconds sec = duration_cast<seconds>(end_time - start_time);
    minutes min = duration_cast<minutes>(end_time - start_time);
    hours hour = duration_cast<hours>(end_time - start_time);


	/* 결과 출력 */
    cout << "걸린 시간 : " << nano.count() << " nanoseconds" << endl;
    cout << "걸린 시간 : " << micro.count() << " microseconds" << endl;
    cout << "걸린 시간 : " << mill.count() << " milliseconds" << endl;
    cout << "걸린 시간 : " << sec.count() << " seconds" << endl;
    cout << "걸린 시간 : " << min.count() << " minutes" <<endl;
    cout << "걸린 시간 : " << hour.count() << " hour" << endl;



    return 0;

}

 

 

 

결과 화면에서 보이는 것처럼 chrono를 이용하게 되면 속도가 매우 빨라 s 단위에서는 측정하지 못했던 동작들의 수행시간들도 측정이 가능해집니다.

 

참고자료 : https://jacking.tistory.com/988

 

 


 

'C++' 카테고리의 다른 글

[c++] 시간 측정하기 (2) - 현재시간 측정  (0) 2021.07.14
댓글
공지사항