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

在Windows下,有一些方便的function,如mmsystem.h QueryPerformanceCounter来创build一个高分辨率的定时器。 有什么类似的Linux?

之前有人问过这个问题 – 但基本上,可以使用一个boost ptime函数,或者一个基本相同的POSIX clock_gettime()函数。

对于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 } 

请参阅: 这个答案的更多信息

这里有一个链接,介绍如何在Linux和Windows上进行高分辨率定时……不,不要使用RTSC。

http://tdistler.com/2010/06/27/high-performance-timing-on-linux-windows

用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 

我什么都没有,但这个链接: http : //www.mjmwired.net/kernel/Documentation/rtc.txt

我很确定RTC是你在找什么。

编辑

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

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