使用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类更容易使用的跨平台计时器。