C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[47165] Re:어플리케이션 실행 시간 구하는 법을 알고 싶습니다.
이현진 [cyberpd] 2167 읽음    2006-11-21 19:12
에스프레소 님이 쓰신 글 :
: 안녕하세요...
:
: 항상 C++ 빌더 포럼에서 많은 도움을 받고 있어서 감사히 생각하고 있습니다.
:
: 궁금한 사항이 있어 질문을 드립니다.
:
: 프로그램이 처음에 실행되고 나서 끝날때 까지 실행된 시간을 구하고 싶습니다.
:
: 어떤 방법이 있는지 고수님들의 의견을 기다리겠습니다.
:
: 그럼 즐푸 하세요 ~~

초간단 방법으로는 GetTickCount() WinAPI 함수를 이용해서 프로그램 시작시에 tick 값을 얻어오고,
프로그램 종료시에 다시 tick 값을 얻어와서 그 차이값으로 프로그램이 수행된 millisecond 값을 계산할 수 있습니다.

좀더 정밀한 수행 시간을 계산하려면, QueryPerformanceFrequency(), QueryPerformanceCounter() WinAPI 함수를 이용하시면 됩니다.

//---------------------------------------------------------------------------
//! 경과 시간 처리 클래스
class DLL_API CTIMER
{
private:
    void initialize();

protected:
    LARGE_INTEGER    tick_count;
    LARGE_INTEGER    last_time;

public:
    CTIMER();
    virtual ~CTIMER();

    //! 경과 시간 초기화
    /*! 경과된 시간을 0으로 초기화 */
    void reset();
    //! 경과 시간 반환
    /*! 마지막으로 초기화한 이후 경과된 시간 반환
    * \return 초(second) 단위 시간
    */
    double elapsed();

    //! 경과 시간 확인
    /*! 주어진 시간이 경과 되었는지 확인
    * \param _time: 경과 확인 시간 (sec)
    * \return true: 경과됨, false: 경과되지 않음
    */
    bool is_elapsed(const double _time);
};
//---------------------------------------------------------------------------

CTIMER::CTIMER()
{
    initialize();
}
//---------------------------------------------------------------------------

CTIMER::~CTIMER()
{
}
//---------------------------------------------------------------------------

void CTIMER::initialize()
{
    ZeroMemory(&tick_count, sizeof(LARGE_INTEGER));
    QueryPerformanceFrequency(&tick_count);
    ZeroMemory(&last_time, sizeof(LARGE_INTEGER));
    reset();
}
//---------------------------------------------------------------------------

void CTIMER::reset()
{
    QueryPerformanceCounter(&last_time);
}
//---------------------------------------------------------------------------

double CTIMER::elapsed()
{
    LARGE_INTEGER currentTime;
    QueryPerformanceCounter(¤tTime);

    return ( ((double)currentTime.QuadPart - (double)last_time.QuadPart) /
            (double)tick_count.QuadPart );
}
//---------------------------------------------------------------------------

bool CTIMER::is_elapsed(const double _time)
{
    return (elapsed()>_time) ? true : false;
}
//---------------------------------------------------------------------------

+ -

관련 글 리스트
47164 어플리케이션 실행 시간 구하는 법을 알고 싶습니다. 에스프레소 1334 2006/11/21
47165     Re:어플리케이션 실행 시간 구하는 법을 알고 싶습니다. 이현진 2167 2006/11/21
47276         Re:Re:어플리케이션 실행 시간 구하는 법을 알고 싶습니다. 김상구.패패루 3127 2006/12/01
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.