在Windows下,有一些方便的功能,例如来自QueryPerformanceCounter
的{{1}}来创建高分辨率计时器。
Linux有类似的东西吗?
答案 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。
答案 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正是你所寻找的。 p>
修改强>
其他答案似乎比我的便携。
答案 5 :(得分:1)
对于我的钱,没有比Qt的QTime类更容易使用的跨平台计时器。