我有一台带有C++项目的机器,它是另一台正在发送时间戳的机器的套接字客户端,它是一个无符号整数,表示自午夜以来的毫秒数。
unsigned int time;如何将此时间值与系统时间进行比较,并以毫秒为单位获得两者之间的差值?随着时间的推移,这种差异应该是“相对”恒定的。
系统时间的精确度必须在1毫秒以内,因为如果差异扩大到(例如) 20毫秒,我就知道有问题,代码需要注意。
我能够使用Windows.h任何建议和示例代码都将不胜感激!
谢谢!!
发布于 2012-06-22 10:17:34
也许这会对你有所帮助。我在学校做的一个项目中使用了它,以比较计算最大子序列和的几种算法的效率。这是一个利用了QueryPerformanceCounter函数的类,它包含在Windows.h中,我相信它在亚毫秒级的范围内是准确的。这是我在C++中使用Windows.h所能想到的最准确的方法。
我是从Google Code上的一个名为gpufrustrum的开源项目中获得的
#include <windows.h>
class CPrecisionTimer
{
LARGE_INTEGER lFreq, lStart;
public:
CPrecisionTimer()
{
QueryPerformanceFrequency(&lFreq);
}
inline void Start()
{
QueryPerformanceCounter(&lStart);
}
inline double Stop()
{
// Return duration in seconds...
LARGE_INTEGER lEnd;
QueryPerformanceCounter(&lEnd);
return (double(lEnd.QuadPart - lStart.QuadPart) / lFreq.QuadPart);
}
};https://stackoverflow.com/questions/11149360
复制相似问题