我有一台带有C ++项目的机器,它是发送时间戳的另一台机器的套接字客户端,它是一个无符号的int,代表自午夜以来的毫秒数。
unsigned int time;
如何将此时间值与系统时间进行比较,并以毫秒为单位得出两者之间的差值?随着时间的推移,差价应该“相对”恒定。
系统时间的准确性必须在1毫秒内,因为如果扩展扩展到(例如)20毫秒,我知道有些问题是错误的,代码需要知道。
我可以使用Windows.h 任何建议将不胜感激,并提供示例代码!
谢谢!
答案 0 :(得分:1)
也许这会对你有所帮助。我在学校的一个项目中使用它来比较几种算法的效率来计算最大子序列和。这是一个利用Windows.h中包含的QueryPerformanceCounter函数的类,我相信它在sub-ms范围内是准确的。这是我使用Windows.h在C ++中做到的最准确的方法。
我是通过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);
}
};