什麼是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