|
에스프레소 님이 쓰신 글 :
: 안녕하세요...
:
: 항상 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;
}
//---------------------------------------------------------------------------
|