بهترین راه استفاده از توابع high resolution هستش. به طور مثال من کلاس پایین رو پیاده سازی کردم و استفاده می کنم.
.header
class BhTimeMeasure
{
public:
BhTimeMeasure();
void start();
void end();
LONGLONG getStart()const;
LONGLONG getEnd()const;
LONGLONG getDif()const;
void showDif(const char* title);
private:
LARGE_INTEGER start_;
LARGE_INTEGER end_;
LARGE_INTEGER freq;
};
source
BhTimeMeasure::BhTimeMeasure()
{
QueryPerformanceFrequency(&freq);
}
void BhTimeMeasure::start()
{
QueryPerformanceCounter(&start_);
}
void BhTimeMeasure::end()
{
QueryPerformanceCounter(&end_);
}
LONGLONG BhTimeMeasure::getStart()const
{
return start_.QuadPart;
}
LONGLONG BhTimeMeasure::getEnd()const
{
return end_.QuadPart;
}
LONGLONG BhTimeMeasure::getDif()const
{
return (LONGLONG)( (end_.QuadPart - start_.QuadPart) / (freq.QuadPart / 1000) );
}
void BhTimeMeasure::showDif(const char* title)
{
cout << title << getDif() ;
}