اگه برنامه ات تحت Windows هست بهترین روش خواندن Hardware Clock است:
#ifndef __FC_PROFILER__H_
#define __FC_PROFILER__H_
#include <vcl.h>
#include <windows.h>
//------------------------------------------------------------------------------
class TFCProfiler
{
private:
__int64 Frequency;
__int64 StartTime;
__int64 StopTime;
public:
TFCProfiler()
{
StartTime = 0;
StopTime = 0;
::QueryPerformanceFrequency((LARGE_INTEGER*) &Frequency);
}
~TFCProfiler()
{
}
public:
void Start()
{
::QueryPerformanceCounter((LARGE_INTEGER*) &StartTime);
}
void Stop()
{
::QueryPerformanceCounter((LARGE_INTEGER*) &StopTime);
}
double GetElapsed() const
{
const double t = static_cast <double> (StopTime - StartTime) / Frequency;
return t;
}
AnsiString GetElapsed(int Point) const
{
AnsiString Str, Frm;
Frm.printf("%c.%df sec", '%', Point);
Str.printf(Frm.c_str(), GetElapsed());
return Str;
}
};
//------------------------------------------------------------------------------
#endif // __FC_PROFILER__H_