Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 带C+的高分辨率定时器+;那么Linux呢?_C++_Linux_Timer - Fatal编程技术网

C++ 带C+的高分辨率定时器+;那么Linux呢?

C++ 带C+的高分辨率定时器+;那么Linux呢?,c++,linux,timer,C++,Linux,Timer,在Windows下,有一些方便的功能,如mmsystem.h中的QueryPerformanceCounter来创建高分辨率计时器。 Linux有类似的功能吗?我只有这个链接: 我很确定RTC是你想要的 编辑 其他答案似乎比我的更具可移植性。这是一个——但基本上,有一个boost ptime函数可以使用,或者一个POSIX clock_gettime()函数,基本上可以达到相同的目的。对于Linux(和BSD),你想使用它 #包括 int main() { timespects; //cloc

在Windows下,有一些方便的功能,如
mmsystem.h
中的
QueryPerformanceCounter
来创建高分辨率计时器。
Linux有类似的功能吗?

我只有这个链接:

我很确定RTC是你想要的

编辑

其他答案似乎比我的更具可移植性。

这是一个——但基本上,有一个boost ptime函数可以使用,或者一个POSIX clock_gettime()函数,基本上可以达到相同的目的。

对于Linux(和BSD),你想使用它

#包括
int main()
{
timespects;
//clock_gettime(clock_MONOTONIC,&ts);//适用于FreeBSD
clock_gettime(clock_REALTIME,&ts);//在Linux上工作
}

请参阅:有关详细信息,这里有一个链接,介绍如何在Linux和Windows上进行高分辨率计时。。。不,不要使用RTSC


就我而言,没有比Qt类更容易使用跨平台计时器的了。

对于C++11,使用
std::chrono::high_resolution_clock

例如:

#include <iostream>
#include <chrono>
typedef std::chrono::high_resolution_clock Clock;

int main()
{
    auto t1 = Clock::now();
    auto t2 = Clock::now();
    std::cout << "Delta t2-t1: " 
              << std::chrono::duration_cast<std::chrono::nanoseconds>(t2 - t1).count()
              << " nanoseconds" << std::endl;
}

不知道Boost提供了计时器功能。谢谢:)或使用库中的。@lothar:+1作为指向ACE库的指针,谢谢。你给出的链接已经过时了,这里有一个新的链接:当然,你需要注意
CLOCK\u MONOTONIC
CLOCK\u REALTIME
之间的区别-前者在系统启动时将其零点设置为任意值,因此仅用于两个
CLOCK\u MONOTONIC
测量值之间的相对比较(但不受墙钟调整的影响)(跨平台C++11标准高分辨率计时器)
#include <iostream>
#include <chrono>
typedef std::chrono::high_resolution_clock Clock;

int main()
{
    auto t1 = Clock::now();
    auto t2 = Clock::now();
    std::cout << "Delta t2-t1: " 
              << std::chrono::duration_cast<std::chrono::nanoseconds>(t2 - t1).count()
              << " nanoseconds" << std::endl;
}
Delta t2-t1: 131 nanoseconds