繁体   English   中英

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

[英]What is the best, most accurate timer in C++?

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

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

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

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

在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问题的扩展,可在此处免费获取。

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

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

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

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

功能time测量实时,但(通常)仅测量到最近的秒。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM