2011-03-26 56 views
0

在C++中,什麼是一種很好的可移植的方式(可能使用一些庫)來獲得自應用程序啓動以來的最低亞毫秒級精度?C++可移植的方式來獲得應用程序啓動後的時間?

謝謝!

編輯:由於亞毫秒是不可能在所有平臺上,那麼有什麼辦法讓它以最可能的準確性?

+0

你不可能找到這樣的事情,因爲「亞毫秒」比至少在一個主要平臺(Windows)上可以獲得的最佳分辨率要好。除此之外,你應該可以在'GetProcessTimes'(Windows)和'times'(POSIX)的簡單包裝類中做這樣的事情。 – Damon 2011-03-26 18:39:13

+0

亞毫秒將取決於平臺。如果你搜索的話,這裏有很多關於這個的報道。 – 2011-03-26 18:41:29

回答

1

看一看clock_t clock (void);包括從time.h。它返回自程序啓動以來流逝的時鐘滴答數。

有關更多信息,請參閱this link

+0

其作者刪除了不正確的評論。 – 2011-03-26 18:54:36

2

Boost Date Time可以幫助,但正如達蒙在評論中已經指出的那樣,這是一個相當依賴於平臺的問題,並且您的最低要求比最廣泛使用的操作系統可以支持的要求更苛刻。

因此,Boost提供的抽象是有幫助的。有,當然其他無數的圖書館,但Boost Date Time庫具有納米秒分辨率哪裏有合適的一種選擇,但你需要在編譯時啓用:

編譯選項

默認情況下, posix_time系統在內部使用單個64位 整數來提供 微秒級別的分辨率。作爲替代,可以使用64位 整數和32位整數(96位 分辨率)的組合來提供 納秒級別的分辨率。 默認實現可能會提供更好的性能和更緊湊的 許多應用程序的內存使用率 不需要納秒 分辨率。

要使用備用分辨率(96 位納秒)可變 BOOST_DATE_TIME_POSIX_TIME_STD_CONFIG 必須在庫中的用戶項目 文件(即生成文件,Jamfile中, 等)來定義。這個宏不被 格里高利系統使用,因此在構建庫時沒有 效應。

+0

我正在看[Boost's posix_time](http://www.boost.org/doc/libs/1_46_1/doc/html/date_time/posix_time.html),但無法找到自從應用開始。 – Damian 2011-03-26 18:59:46

+0

您是否看到「從時鐘構建」部分? – 2011-03-26 19:13:09

+0

是的,這一切都說「獲取本地/當前時間」。但無法找到自應用程序啓動以來如何獲得時間。 – Damian 2011-03-26 19:55:07

相關問題