|
#include "StdAfx.h"
#include "DebugUtils.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
namespace SbjCore
{
namespace Utils
{
namespace Debug
{
// Found on CodeProject, no copyright or license attached
// Author: Chen Venkataraman (venkatar@sig.com)
// Date: Wed Dec 6, 2001
HighResElapsedTimer::HighResElapsedTimer(LPCTSTR strName, bool bTimeRelease /*= false*/) :
m_strName(strName),
m_bTimeRelease(bTimeRelease)
{
#ifdef _DEBUG
if (m_llFrequency == 0) // frequency value not yet set
{
LARGE_INTEGER liFrequency;
QueryPerformanceFrequency(&liFrequency);
m_llFrequency = liFrequency.QuadPart;
}
QueryPerformanceCounter(&m_llCounter);
#else
if (m_bTimeRelease)
{
if (m_llFrequency == 0) // frequency value not yet set
{
LARGE_INTEGER liFrequency;
QueryPerformanceFrequency(&liFrequency);
m_llFrequency = liFrequency.QuadPart;
}
QueryPerformanceCounter(&m_llCounter);
}
#endif
}
HighResElapsedTimer::~HighResElapsedTimer()
{
GetTime();
}
CString HighResElapsedTimer::GetTime()
{
CString s;
#ifdef _DEBUG
LARGE_INTEGER liNow;
QueryPerformanceCounter(&liNow);
double duration = (double)(liNow.QuadPart - m_llCounter.QuadPart)/m_llFrequency;
s.Format(_T("%s : Elapsed time = %.5lf seconds\n"), m_strName, duration);
TRACE(s);
#else
if (m_bTimeRelease)
{
LARGE_INTEGER liNow;
QueryPerformanceCounter(&liNow);
double duration = (double)(liNow.QuadPart - m_llCounter.QuadPart)/m_llFrequency;
s.Format(_T("%s : Elapsed time = %.5lf seconds\n"), m_strName, duration);
TRACE(s);
}
#endif
return s;
}
/* static */
LONGLONG HighResElapsedTimer::m_llFrequency = 0;
}
}
}
//*** Modification History ***
// $Log: $
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
Real name is Steve Johnson. Programming since 1979. Started on a Heathkit Micro with a DEC LSI-11 and UCSD Pascal. Moved to PCs & DOS as soon as Turbo Pascal became available. Did some Assembly, ISR, TSR etc. All this while working for a Manufacturing Co. for 8 years. Had my own solo Co. doing barcode labeling software for 4 years (terrible business man, all I wanted to do was code). Since then working for various software companies. Moved to Windows around the time of 3.1 with Borland C then C++. Then on to VC++ and MFC, and just about anything I could get my hands on or had to learn for my job, and been at it ever since. Of course recently I've been playing with .NET, ASP, C#, WPF etc.