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
[40150] Re:실행 파일 안에 있는 함수들의 수행 시간을 모니터링 할 수 있을까요?
이현진 [cyberpd] 1053 읽음    2005-05-13 09:04
Jay 님이 쓰신 글 :
: 예를 들면 다음과 같이요...
:
: 1. TMyClass::GetData() : 2초
:
: 2. TMyClass::DisplayData() : 3초
:
: 3. TMyClass::~TMyClass(): 1초
:
: ....
:
:
: 이런식으로 모니터링 해서, 실행 속도에 영향을 주는 함수를 분석해보려고 합니다.
: 아시는 분은 "꼭" 도와주세요

QueryPerformanceFrequency(), QueryPerformanceCounter() 등의 정밀도 높은
시간 함수를 이용해서 함수의 수행 시간을 얻어 올 수 있습니다.

전역의 정적 클래스(global static, singleton)하나를 만들어 각 함수 이름을 키값으로
함수 시작 시간과, 함수 종료 시간을 구해서 총 수행 시간을 저장하면 됩니다.
이를 응용하면, 애플리케이션에서 총 한번의 LOOP에 어떠한 함수가 몇번 호출되었는 지도
알 수 있습니다.

TMyClass::GetData()
{
    gsProfiler->Begin("TMyClass::GetData()");
         ......
    gsProfilerp->End("TMyClass::GetData()");
}

이러한 프로파일링과 관련된 내용은 게임개발 서적인 "Game Programming Gems" 1,2,3권에
아이디어가 소개되어 있습니다.

아니면, AQTime, MemProof (http://automatedqa.com) 등의 성능 검사 프로그램을
활용해도 될듯합니다. 이와 관련된 자료는 볼랜드포럼 게시판들에서 검색해 보세요.

//---------------------------------------------------------------------------
class CELAPSTIMER {
private:
protected:
    LARGE_INTEGER    nTickCount;
    LARGE_INTEGER    nLastTime;

public:
    CELAPSTIMER();
    virtual ~CELAPSTIMER();

    void Initialize();
    void ResetTime();
    float ElapsedTime();
};
//---------------------------------------------------------------------------

CELAPSTIMER::CELAPSTIMER()
{
    Initialize();
}
//---------------------------------------------------------------------------

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

void CELAPSTIMER::Initialize()
{
    ZeroMemory(&nTickCount, sizeof(LARGE_INTEGER));
    QueryPerformanceFrequency(&nTickCount);
    ZeroMemory(&nLastTime, sizeof(LARGE_INTEGER));
    ResetTime();
}
//---------------------------------------------------------------------------

void CELAPSTIMER::ResetTime()
{
    QueryPerformanceCounter(&nLastTime);
}
//---------------------------------------------------------------------------

float CELAPSTIMER::ElapsedTime()
{
    LARGE_INTEGER currentTime;
    QueryPerformanceCounter(¤tTime);

    return ( ((float)currentTime.QuadPart - (float)nLastTime.QuadPart) /
            (float)nTickCount.QuadPart );
}
//---------------------------------------------------------------------------

+ -

관련 글 리스트
40136 실행 파일 안에 있는 함수들의 수행 시간을 모니터링 할 수 있을까요? Jay 684 2005/05/12
40150     Re:실행 파일 안에 있는 함수들의 수행 시간을 모니터링 할 수 있을까요? 이현진 1053 2005/05/13
40153         답변 감사드립니다. Jay 652 2005/05/13
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.