본문 바로가기

업무 채널

[MFC] STOPWATCH(스톱워치) 시간 측정하기 예제소스

시간을 측정할 수 있는 StopWatch 함수에 대해 알아보자.

StopWatch는 함수 등 작업의 소요시간이 얼마나 걸리는 지 측정하는 데 용이하다.

사용법은 간단하다.

 

1. 다음 예제를 입력하여 헤더 파일을 생성한다.

 

[StopWatch.h]

 

 

#ifndef __STOPWATCH_H__
#define __STOPWATCH_H__
#include <sys/timeb.h>


class STOPWATCH
{
private:
struct _timeb m_Stb;
struct _timeb m_Etb;
__int64 m_stime;
__int64 m_etime;
public:
void Start()
{
_ftime(&m_Stb);
}
void End()
{
_ftime(&m_Etb);
}
__int64 TimeCheck()
{
m_stime = (__int64)m_Stb.time * (1000) + (__int64)m_Stb.millitm;
m_etime = (__int64)m_Etb.time * (1000) + (__int64)m_Etb.millitm;
return (m_etime - m_stime);
}
};

#endif

 

 

2. 시간측정이 필요한 소스에 위에 작성한 헤더파일을 include 하고 소스를 작성한다.

 

[xxx.cpp]

 

 

#include "StopWatch.h"

STOPWATCH CWatch;
CWatch.Start(); //시간측정 시작
/*시간측정할 작업입력*/
CWatch.End(); //시간측정 끝
CString str;
str.Format(L"%I64dms", CWatch.TimeCheck());
AfxMessageBox(str);

 

결과를 확인해보자.

 

 

다음과 같이 메세지박스 형태로 결과가 나타나도록 설정해두었다.

ms단위이므로 1/1000초, 나의 작업은 약 3.3초 걸린것을 확인할 수 있다.

 

 

  • 오류라는 메세지 2013.09.06 11:01

    오류라는 메세지안뜨게 하는법 없나요

    오류라는 메세지 말고

    시간 이라고 표시하고 ㅇ싶은데요

  • 질문있어요 2013.11.14 19:31

    저기에서 ms로 계산되는데 그 ms가아닌 초로 계산하게끔 어떻게하나요?

    • Favicon of https://bigmark.tistory.com BlogIcon bigmark 2013.11.15 09:23 신고

      ms가 1000분의 1초 이니까, 나누기 1000 하시면 되죠..

    • 질문있어요 2013.11.15 16:54

      아직 mfc초보여서 잘모르겟는데...
      나누기 1000을 어디다해야 되는건가요?
      str.Format(L"%I64dms", CWatch.TimeCheck());
      여기에 나누기 1000해야댈거같은데 오류가떠서요,,ㅜ

  • Favicon of https://bigmark.tistory.com BlogIcon bigmark 2013.11.18 09:05 신고

    CWatch.TimeCheck()/1000을 하면 되지 않을까 싶네요

  • 질문있어요 2013.11.18 19:49

    저기 정말죄송한데 /1000로하면 초가되는데 int로 되어서 소숫점자리는 안나오고 int기때문에 정수만 표시되는데 소숫점까지 나오게 할수있나요?..헤더파일이나 그런거 int로정의된거 double로바꾸면 아에 선언이안되던데...방법이있는건가요?..

    • Favicon of https://bigmark.tistory.com BlogIcon bigmark 2013.11.19 14:42 신고

      정수형을 실수형으로 변경하시면 되죠. 예를들어 str.Format(L"%I64dms", CWatch.TimeCheck()); 부분을 str.Format(L"%fms", float(CWatch.TimeCheck())/1000) 이런식으로요~

    • 질문있어요 2013.11.19 18:11

      제가 모르는부분이 많았는데 정말 자세히 답변도해주시고 정말감사합니다..

  • 안녕하세요 2013.11.21 20:00

    저기 나오는거를 몇분몇초몇ms까지 나오게 할수도있나요?