在Windows下也有像一些方便的功能,QueryPerformanceCounter从mmsystem.h创建高分辨率定时器.Linux有类似的东西吗?
gri*_*eve 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
}
Run Code Online (Sandbox Code Playgroud)
请参阅:此答案以获取更多信息
这是一个描述如何在Linux和Windows上进行高分辨率计时的链接......不,不要使用RTSC.
对于 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;
}
Run Code Online (Sandbox Code Playgroud)
输出:
Delta t2-t1: 131 nanoseconds
Run Code Online (Sandbox Code Playgroud)