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