什么是C ++中最好,最准确的计时器?

时间:2011-04-02 04:26:10

标签: c++ timer

C ++中最好,最准确的计时器是什么?

4 个答案:

答案 0 :(得分:12)

对此的答案是特定于平台的。操作系统负责跟踪时序,因此,C ++语言本身不提供语言结构或内置函数来执行此操作。

但是,以下是与平台相关的计时器的一些资源:

跨平台解决方案可能是boost::asio::deadline_timer

答案 1 :(得分:12)

在C ++ 11中,您可以通过以下方式移植到最高分辨率的计时器:

#include <iostream>
#include <chrono>
#include "chrono_io"

int main()
{
    typedef std::chrono::high_resolution_clock Clock;
    auto t1 = Clock::now();
    auto t2 = Clock::now();
    std::cout << t2-t1 << '\n';
}

示例输出:

74 nanoseconds

“chrono_io”是一个可以轻松解决这些新类型的I / O问题的扩展程序,可以免费使用here

还有一个<chrono>的实现可用于boost(可能仍然在主干上,不确定它是否已被释放)。

答案 2 :(得分:2)

在Windows下它将是QueryPerformanceCounter,虽然看到你没有指定任何条件,但可能有一个外部超高分辨率计时器,它有一个驱动程序的c ++接口

答案 3 :(得分:2)

C ++标准并没有充分说明时间。通过<ctime>标题从C继承了一些功能。

函数clock是获得亚秒精度的唯一方法,但精度可能低至一秒(由宏CLOCKS_PER_SEC定义)。此外,它根本不测量实时,而是处理器时间。

函数time测量实时,但(通常)仅测量最近的秒。

要以亚秒精度测量实时,您需要一个非标准库。