在C++中,什麼是一種很好的可移植的方式(可能使用一些庫)來獲得自應用程序啓動以來的最低亞毫秒級精度?C++可移植的方式來獲得應用程序啓動後的時間?
謝謝!
編輯:由於亞毫秒是不可能在所有平臺上,那麼有什麼辦法讓它以最可能的準確性?
在C++中,什麼是一種很好的可移植的方式(可能使用一些庫)來獲得自應用程序啓動以來的最低亞毫秒級精度?C++可移植的方式來獲得應用程序啓動後的時間?
謝謝!
編輯:由於亞毫秒是不可能在所有平臺上,那麼有什麼辦法讓它以最可能的準確性?
看一看clock_t clock (void);
包括從time.h
。它返回自程序啓動以來流逝的時鐘滴答數。
有關更多信息,請參閱this link。
其作者刪除了不正確的評論。 – 2011-03-26 18:54:36
Boost Date Time可以幫助,但正如達蒙在評論中已經指出的那樣,這是一個相當依賴於平臺的問題,並且您的最低要求比最廣泛使用的操作系統可以支持的要求更苛刻。
因此,Boost提供的抽象是有幫助的。有,當然其他無數的圖書館,但Boost Date Time庫具有納米秒分辨率哪裏有合適的一種選擇,但你需要在編譯時啓用:
編譯選項
默認情況下, posix_time系統在內部使用單個64位 整數來提供 微秒級別的分辨率。作爲替代,可以使用64位 整數和32位整數(96位 分辨率)的組合來提供 納秒級別的分辨率。 默認實現可能會提供更好的性能和更緊湊的 許多應用程序的內存使用率 不需要納秒 分辨率。
要使用備用分辨率(96 位納秒)可變 BOOST_DATE_TIME_POSIX_TIME_STD_CONFIG 必須在庫中的用戶項目 文件(即生成文件,Jamfile中, 等)來定義。這個宏不被 格里高利系統使用,因此在構建庫時沒有 效應。
你不可能找到這樣的事情,因爲「亞毫秒」比至少在一個主要平臺(Windows)上可以獲得的最佳分辨率要好。除此之外,你應該可以在'GetProcessTimes'(Windows)和'times'(POSIX)的簡單包裝類中做這樣的事情。 – Damon 2011-03-26 18:39:13
亞毫秒將取決於平臺。如果你搜索的話,這裏有很多關於這個的報道。 – 2011-03-26 18:41:29