来自多个数据源的时间

Time from multiple data sources

本文关键字:时间 数据源      更新时间:2023-10-16

我有一台带有C++项目的机器,该项目是另一台发送时间戳的机器的套接字客户端,它是一个无符号的int,表示自午夜以来的毫秒数。

unsigned int time;

如何将此时间值与系统时间进行比较,并以毫秒为单位获取两者之间的分布? 随着时间的推移,点差应该是"相对"恒定的。

系统时间的准确性必须在一毫秒内,因为如果传播扩大到(例如)20毫秒,我知道出了问题,代码需要知道。

我能够使用 Windows.h任何建议将不胜感激,示例代码也将不胜感激!

谢谢!!

也许这会对你有所帮助。我在学校做的一个项目中使用它来比较几种算法的效率,以计算最大子序列总和。这是一个利用Windows.h中包含的函数QueryPerformanceCounter的类,我相信它在sub-ms范围内是准确的。这是我能想到的最准确的方法,C++使用Windows.h。

我从谷歌代码上一个名为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);
  }
};