我试图了解Windows中的各种高精度计时技术,并直接将其与C++挂钩到various APIs中。
我知道QPC,并且知道GetSystemTimePreciseAsFileTime()将相同的技术用于高精度时间戳。但是GetSystemTimeAsFileTime() API似乎是used by SQL Server to get its high precision timestamps(即DATETIME2),我觉得很奇怪。
注意:Acquiring high-resolution time stamps msdn文章是一个很好的资源(尽管它可能更多是“论文”)。
我的问题是SYSTEMTIME structure
typedef struct _SYSTEMTIME {
WORD wYear;
WORD wMonth;
WORD wDayOfWeek;
WORD wDay;
WORD wHour;
WORD wMinute;
WORD wSecond;
WORD wMilliseconds;
} SYSTEMTIME, *PSYSTEMTIME;
似乎只有毫秒精度,此结构的文档在结构的wMilliseconds部分进行了注释:
如果我想将高精度的FILETIME转换为某种SYSTEMTIME结构,该如何保持额外的精度?从FILETIME类型实现自定义转换似乎是一项艰巨的任务?
最佳答案
额外的转换非常容易-(fileTime % 10000)
为您提供SYSTEMTIME所不具备的功能(以100ns为步长)。因此,您可以使用它加上SYSTEMTIME。
尽管SYSTEMTIME主要用于UI;原始的FILETIME较小,可以存储,并且可以轻松用于多种用途。
关于c++ - C++高分辨率SYSTEMTIME结构,大于ms?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32812334/