Thinking Different





timeGetTime() 함수를 이용한 ms 까지의 시간을 구할 수 있는 코드 구동시간 클래스를 제작하였음.

CodeTimer.h

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#pragma once
//*******************************************
//          Code Timer ver 1.0 Free
//
//                     by Copynull@nate.com
//                             2011. 12. 17
//*******************************************
 
#include <MMSystem.h>
#pragma comment(lib, "winmm.lib")
 
class CCodeTimer
{
public:
    CCodeTimer(void);
    ~CCodeTimer(void);
 
public:
    BOOL Begin();
    BOOL End();
 
    inline DWORD const GetTime() { return dwEndTime-dwStartTime; }
 
private:
    BOOL    bIsBegin;
    DWORD    dwStartTime;
    DWORD    dwEndTime;
};


CodeTimer.cpp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include "StdAfx.h"
#include "CodeTimer.h"
 
 
CCodeTimer::CCodeTimer(void)
{
    bIsBegin = FALSE;
    dwStartTime = 0;
    dwEndTime = 0;
}
 
 
CCodeTimer::~CCodeTimer(void)
{
}
 
BOOL CCodeTimer::Begin()
{
    timeBeginPeriod(1);
 
    bIsBegin = TRUE;
    
    dwStartTime = timeGetTime();
 
    return TRUE;
}
 
BOOL CCodeTimer::End()
{
    if(!bIsBegin)
        return FALSE;
    
    bIsBegin = FALSE;
 
    dwEndTime = timeGetTime();
 
    timeEndPeriod(1);
 
    return TRUE;
}
 

main.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// cmd.cpp : 콘솔 응용 프로그램에 대한 진입점을 정의합니다.
//
 
#include "stdafx.h"
#include "CodeTimer.h"
 
int _tmain(int argc, _TCHAR* argv[])
{
    CCodeTimer tt;
    DWORD dwSum = 0;
    
    // Timer Start
    if(!tt.Begin())
        return -1;
 
    // something do ...
    for(DWORD i=0; i<1000000000; i++)
        dwSum += i;
 
    // Timer End
    if(!tt.End())
        return -1;
 
    // Time Check
    printf("구동 시간 : %d ms\n", tt.GetTime());
 
    return 0;
}
 

간단히 위와 같이 헤더 파일을 추가후 클래스 객체를 생성한 다음 사용하면 된다.