使用C ++和Linux的高分辨率计时器?

时间:2009-02-11 20:24:54

标签: c++ linux timer

在Windows下,有一些方便的功能,例如来自QueryPerformanceCounter的{​​{1}}来创建高分辨率计时器。 Linux有类似的东西吗?

6 个答案:

答案 0 :(得分:32)

它是asked before here - 但基本上,你可以使用一个boost ptime函数,或者一个POSIX clock_gettime()函数可以起到基本相同的作用。

答案 1 :(得分:30)

对于Linux(和BSD),您想使用clock_gettime()

#include <sys/time.h>

int main()
{
   timespec ts;
   // clock_gettime(CLOCK_MONOTONIC, &ts); // Works on FreeBSD
   clock_gettime(CLOCK_REALTIME, &ts); // Works on Linux
}

有关详细信息,请参阅:This answer

答案 2 :(得分:8)

这是一个描述如何在Linux和Windows上进行高分辨率计时的链接......不,不要使用RTSC。

https://web.archive.org/web/20160330004242/http://tdistler.com/2010/06/27/high-performance-timing-on-linux-windows

答案 3 :(得分:3)

使用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;
}

输出:

Delta t2-t1: 131 nanoseconds

答案 4 :(得分:1)

我只有这个链接: http://www.mjmwired.net/kernel/Documentation/rtc.txt

我很确定RTC正是你所寻找的。

修改

其他答案似乎比我的便携。

答案 5 :(得分:1)

对于我的钱,没有比Qt的QTime类更容易使用的跨平台计时器。