[英]Log with timestamps that have millisecond accuracy & resolution in Windows C++
[英]Linux/OSX Clock Resolution with millisecond accuracy?
在Windows上,我可以調用QueryPerformanceCounter來獲取高分辨率數據點,但是此方法調用會受到BIOS,多核CPU和某些AMD芯片問題的影響。 我可以調用timeBeginPeriod將Windows中的系統時鍾分辨率降低到1ms(而不是標准的〜15ms),這意味着我可以只使用timeGetTime來獲取我指定的時鍾分辨率中的時間。
所以! 在OSX / Linux上,我應該期望什么C ++時鍾分辨率? 我能否獲得類似於Windows的1ms分辨率? 由於我正在使用實時媒體,因此我希望該時鍾分辨率盡可能低:我可以在內核中更改此值(例如在帶有timeBeginPeriod的Windows中)嗎? 這是一個高性能的應用程序,所以我想讓當前時間成為一個快速的函數調用。 而且我想知道時鍾通常是否漂移,或者我可以預期到什么奇怪的問題。
謝謝! 布雷特
如果您使用的是C ++ 11,則可以使用std::chrono::high_resolution_clock
,它應該為您提供系統提供的高分辨率時鍾。 要獲得毫秒級的持續時間
typedef std::chrono::high_resolution_clock my_clock;
my_clock::time_point start = my_clock::now();
// Do stuff
my_clock::time_point end = my_clock::now();
std::chrono::milliseconds ms_duration =
std::chrono::duration_cast<std::chrono::milliseconds>(end - start);
如果您不使用C ++ 11,則gettimeofday
函數可在OSX和大多數Linux發行版中使用。 它為您提供自紀元以來的時間(以秒和微秒為單位)。 分辨率未指定,但是在任何現代系統上,它至少應為您提供毫秒級的精度。
要補充David的答案,如果您不能使用C ++ 11,Boost的Timer類可以為您提供幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.