gpt4 book ai didi

c++ - 获取微秒精度的时间点

转载 作者:行者123 更新时间:2023-11-30 05:44:32 28 4
gpt4 key购买 nike

我需要以微秒的精度检索当前时间点。时间点可以相对于任何固定日期。

如何实现?对于工作策略,我真的不应该使用 boost 或任何其他库。

我在多平台应用程序和 Linux 下工作,我可以使用 C++11 system_clock::now().time_since_epoch(),但在 Windows 下我使用 VS2010,所以我没有 std::chrono 库。

我见过 RtlTimeToSecondsSince1970 函数,但它的分辨率是秒。

最佳答案

计时器和计时是一个非常棘手的主题,在我看来,当前的跨平台实现还不够标准。因此,我会为具有适当 #ifdef 的 Windows 推荐一个特定版本。如果您想要跨平台版本,请参阅其他答案。

如果您必须/想要使用特定于 Windows 的调用,那么 GetSystemTimeAsFileTime(或在 Windows 8 上 GetSystemTimePreciseAsFileTime)是获取 UTC 时间和 QueryPerformanceCounter 适用于高分辨率时间戳。它将自世界标准时间 1601 年 1 月 1 日以来的 100 纳秒间隔数返回到 FILETIME 结构中。

This fine article详细介绍了在 Windows 中测量计时器和时间戳的细节,非常值得一读。

编辑:将 FILETIME 转换为我们,您需要通过 ULARGE_INTEGER。

FILETIME ft;
GetSystemTimeAsFileTime(&ft);
ULARGE_INTEGER li;
li.LowPart = ft.dwLowDateTime;
li.HighPart = ft.dwHighDateTime;
unsigned long long valueAsHns = li.QuadPart;
unsigned long long valueAsUs = valueAsHns/10;

关于c++ - 获取微秒精度的时间点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29794612/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com