什么是C++中最好,最准确的定时器?什么是C++中最好,最准确的计时器?
回答
对此的答案是平台特定的。操作系统负责跟踪时序,因此C++语言本身不提供任何语言结构或内置函数。
然而,这里是与平台相关的定时器一些资源:
- 的Windows API -
SetTimer
:http://msdn.microsoft.com/en-us/library/ms644906(v=vs.85).aspx - 的Unix -
setitimer
:http://linux.die.net/man/2/setitimer
一个跨平台解决方案可能是boost::asio::deadline_timer。
回答与不可笑的基于时间的关键应用程序相关 – Enders 2011-04-02 04:30:56
在Windows环境下会QueryPerformanceCounter
,但看到,因为你没有指定任何条件下,可能有对司机的C++接口的外部超高分辨率定时器
谢谢,但在Linux/Unix上呢? – 2011-04-02 04:34:21
@Josh:看到我上面的答案。 – 2011-04-02 04:35:07
C++标准不说关于时间的一大堆。有一些通过<ctime>
标题从C继承的功能。
函数clock
是获得亚秒级精度的唯一方式,但精度可能低至一秒(它由宏CLOCKS_PER_SEC
定义)。此外,它并不测量实时,而是处理器时间。
函数time
测量实时,但(通常)只测量到最近的秒。
要测量亚秒级精度的实时性,您需要一个非标准库。
在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。
在boost中还有一个<chrono>
可用的实现(可能仍然在主干线上,不确定它是否被释放)。
我试着运行now()函数3亿次,大约有100次,t1和t2的延迟/差值大于10微秒。是因为上下文切换还是其他?谢谢 – user1687035 2016-12-12 05:50:12
@ user1687035:上下文切换是一个可能的罪魁祸首。它取决于什么平台,哪种编译器(甚至编译器版本),机器上还有哪些进程等等。通用计算机并不是一个好时钟,除非它不断地询问其他计算机是什么时间。 ;-)在macOS上,我得到了相当可靠的计时*除非*时间机器正在备份,聚光灯正在索引,或邮件正在提取。 – 2016-12-12 14:39:09
- 1. 什么是最准确的;声明VS准备好的声明
- 2. 什么是C/C++中最好的计算机视觉库?
- 3. .NET中最精确的计时器是什么?
- 4. 什么是最好的方式来控制这些计时器?
- 5. 什么是Windows下最好或最常用的C++编译器?
- 6. 什么是最准确的算法来计算RGBA色差?
- 7. 什么是最好的XML解析器
- 8. 什么是最好的Python编辑器?
- 9. 什么是最好的分类器
- 10. 什么是最好的JavaScript混淆器?
- 11. 什么是最好的PHP编辑器?
- 12. 什么是fgets失败时使用的最准确的errno val?
- 13. 什么时候最好用C++模板?
- 14. C++中的计时函数:最准确的方法
- 15. 什么是最准确的编码检测器?
- 16. 什么是最好的计算平台SQL或c#
- 17. “DateUTC”最准确的joda时间表示是什么?
- 18. 什么是最好的小C++包来计算矩阵的最大特征值?
- 19. 什么是最好的网页设计源代码编辑器?
- 20. 在C++循环中创建新变量时最好是什么
- 21. 什么是估算C++代码时间性能的最准确方法
- 22. Java的最快/最好的Base64编解码器是什么?
- 23. MATLAB中最好的捷径是什么?
- 24. 什么是C/C++中最好的加密库?
- 25. 什么是最好的C#VB.net转换器?
- 26. 什么是快速查找最好的c + + stl容器?
- 27. 建筑设计困境。什么是最好的设计?
- 28. 什么是最好的街道地址标准化?
- 29. 什么是WPF最好的空闲时间选择器?
- 30. 时下,什么是最好的PHP图像处理器库?
绝对最佳定时器可能是在某个连接到原子钟的嵌入式设备上运行的RTOS上的一些系统特定的调用。那是你在找什么,或者你是否愿意为“最好,最准确的计时器”少一些? – 2011-04-02 04:27:59
@詹姆斯沿着电线行走和待处理的时间等也被纳入考虑范围? (这句话没有任何意义......) – 2011-04-02 04:41:12
另外,这样的高分辨率定时器可能会吃掉CPU。 – 2011-04-02 04:42:00