gpt4 book ai didi

c++ - 自处理器加电以来从 std::chrono::steady_clock::now() 获取微秒时间

转载 作者:太空宇宙 更新时间:2023-11-04 10:37:13 55 4
gpt4 key购买 nike

我正在尝试获取自处理器启动以来的微秒时间,

我看过很多发since epoch的帖子,但是我需要since power-up的时间

此外,我正在尝试将时间设为 long int,而不是 time_point。

将 time_point 转换为 long int 的最佳和最快方法是什么。

最后,我不确定 boost::steady_clock 和 std::steady_clock 之间有什么区别,

谢谢,-D

最佳答案

我不知道在 Linux 下将正常运行时间提高到微秒分辨率的机制,但是 sysinfo提供了一种简单的机制来以第二分辨率进行检索:

#include <sys/sysinfo.h>

struct sysinfo info;
if( sysinfo( &info ) != 0 )
{
// handle the failure
}

// uptime in seconds is available (as a long) in info.uptime

我假设从 time_pointlong 的转换现在不相关,但时间点代表特定的时间点,而不是时间长度从一个引用点过去了。要从起点转换为多个时间单位,您需要将其转换为持续时间(通过减去起点)并使用 duration_cast 转换为您选择的单位。例如:

using namespace std::chrono; // for brevity in the example code.    

auto elapsed = duration_cast<milliseconds>( timepoint1 - reftimepoint ).count()

boost::steady_clock 是 C++ 标准库中包含 std::steady_clock 之前的实现。除非您正在处理旧代码库或需要可移植到不支持 C++11 的编译器或平台,否则我认为您现在不需要使用 boost::steady_clock

关于c++ - 自处理器加电以来从 std::chrono::steady_clock::now() 获取微秒时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36850434/

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