[英]What is the best, most accurate timer in C++?
什么是C ++中最好,最准确的计时器?
对此的答案是特定于平台的。 操作系统负责跟踪时序,因此,C ++语言本身不提供语言结构或内置函数来执行此操作。
但是,以下是与平台相关的计时器的一些资源:
SetTimer
: http : //msdn.microsoft.com/en-us/library/ms644906 ( SetTimer
.aspx setitimer
: http : //linux.die.net/man/2/setitimer 跨平台解决方案可能是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.