46

在 Windows 下,有一些方便的功能,例如QueryPerformanceCounter创建mmsystem.h高分辨率计时器。Linux有类似的东西吗?

4

6 回答 6

31

之前在这里被问过——但基本上,你可以使用一个 boost ptime 函数,或者一个 POSIX clock_gettime() 函数,它可以达到基本相同的目的。

于 2009-02-11T20:29:53.210 回答
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
}

请参阅:此答案以获取更多信息

于 2009-02-11T20:30:45.613 回答
8

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

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

于 2011-01-21T16:54:13.690 回答
4

对于 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
于 2016-08-17T18:48:53.213 回答
1

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

我很确定 RTC 是您正在寻找的东西。

编辑

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

于 2009-02-11T20:28:48.580 回答
1

在我看来,没有比 Qt 的QTime类更易于使用的跨平台计时器了。

于 2011-07-04T21:44:02.060 回答