\

코딩/C++ 함수모음

C++ 타이머 2 (시간 받아오기)

코딩하는 메추라기 2021. 9. 13. 21:02
반응형

목차

        1. 서론

        2. 필요한 헤더파일

        3. 필요한 함수

        4. 예제

        5. 타이머 만들기

안녕하세요~~! 코딩하는 메추라기 케일입니다.

이번 글은 시간 관련 함수 2탄인데요...

오늘 제가 소개할 함수는요 바로 현재 시간을 받아와 주는 함수입니다.

 

 

필요한 헤더파일은 1개밖에 없지만 그래도 그냥 써봤습니다.

▶<time.h>

 

<time.h> 헤더파일에는 오늘 저희가 이용할 clock 함수와 clock_t 자료형이 포함되어 있습니다.

 

----필요한 함수----

필요한 함수입니다.

▶clock()

 

clock 함수는 우리가 만든 코드가 프로그램을 시작해서 clock() 함수를 사용할 때까지 걸린 시간을 나타냅니다.

필요한 함수는 clock()밖에 없지만 오늘 필요한 것은 1개가 더 있습니다.

시간을 담는 자료형 clock_t 입니다.

clock_t는 clock()함수로 측정한 시간을 담는 자료형입니다.

 

또 clock_t 자료형을 double이나 int 형으로 우리가 알아볼 수 있게 만드는 것도 중요합니다.

CLOCKS_PER_SEC 라는 걸 통해 clock_t 자료형을 초 형태로 만들 수 있습니다.

이렇게 말이죠

clock_t start = clock();

clock_t end = clock();

cout<<double(end - start) / CLOCKS_PER_SEC;

 

그럼 이제 clock() 와 clock_t를 활용해서 무언가를 만들어 보겠습니다.

 

----예제----

 한번 clock()함수와 clock_t 자료형을 사용한 예제를 만들어 보겠습니다.

일단 저는 프로그램이 실행되는데 얼마나 시간이 걸릴지 측정해주는 걸 만들어 보겠습니다.

clock_t start = clock();

이렇게 start라는 변수를 만들어 줬습니다.

 

그 다음에는

for (int i = 0; i < 100000; i++) {
	for (int j = 0; j < 100000; j++) {
		a++;
	}
}

이렇게 해서 엄청나게 오래 걸리는 연산을 추가해 봤습니다.

 

그 다음 마지막으로

저 위의 연산을 하는데까지 걸린 시간을

clock_t end = clock();

end 변수에 넣어줬습니다.

 

그리고 나서 걸린 시간을 측정하기 위해

cout<<"걸린 시간: "<<double(end - start) / CLOCKS_PER_SEC;

을 놔 줬습니다.

 

실행시키니

이렇게 되네요

컴퓨터가 느린건지... 웹사이트가 느린건지 25초나 걸렸습니다.

 

그럼 한번 타이머를 만들러 가보겠습니다.

 

----타이머 만들기----

그럼 이제 타이머를 만들어보겠습니다.

 

먼저 맨 처음에 시간을 입력받고

그 다음으로 clock_t 자료형으로 start 변수를 만든 다음

다시 clock_t 자료형으로 end 변수를 만들고 end변수를 시간이 갈수록 증가시킨 다음에 end - start 가 입력받은 시간이 되는 순간 멈추게 하면 되겠죠?

 

먼저 시간을 입력받겠습니다.

 

int second = 0;
cout<<"초를 입력해 주세요: ";
cin>>second;

요렇게 한 다음에

 

이제 start라는 변수를 지정해주겠습니다. start변수는 타이머가 시작된 때를 담는 변수입니다.

clock_t start = clock();

그 다음 또다시 end란 변수를 선언해 줍니다.

clock_t end = clock();

이제 end - start가 second가 될때까지 end의 값을 다시 정해 줄겁니다.

 

while (true) {
  end = clock();

  if (double(end - start) / CLOCKS_PER_SEC == second) {
	  break;
  }
}

이게 어떤 뜻이냐면

일단 while(true)로 계속 이 식이 반복됩니다.

아까 선언시킨 end란 변수도 계속 현재 시간으로 새로운 값을 할당해 줍니다.

계속 반복하다가 end랑 start랑의 차가 아까 입력했던 second와 같으면 저 반복문을 중단시킵니다.

 

전체 코드입니다

#include <iostream>

using namespace std;

int main()
{
    int second = 0;
    cout<<"초를 입력해 주세요: ";
    cin>>second;
    
    clock_t start = clock();
    
    clock_t end = clock();
    
    while (true) {
        end = clock();
        
        if (double(end - start) / CLOCKS_PER_SEC == second) {
            break;
        }
    }
    
    cout<<"끄읕!";
}

실행을 시켰더니

 

잘 됩니다

 

이건 사진이지만 여러분도 하시면 잘 될 것입니다!

 

이번 글은 여기까지입니다!

다음은 오름차순 내림차순 청렬 함수에 대해 알려드리겠습니다!