以Qt为单位获得毫秒精度当前时间

时间:2015-07-30 19:53:59

标签: c++ qt qtime

关于QTime::currentTime()的Qt文档说:

  

请注意,准确性取决于底层的准确性   操作系统;并非所有系统都能提供1毫秒的精度。

但是有没有办法在Windows 7中以毫秒精度获得这段时间?

4 个答案:

答案 0 :(得分:2)

定时器分辨率可能因平台而异,读数可能不准确。如果您需要在Windows 7上获得高分辨率,准确的时间戳,它提供了QPC API:

https://msdn.microsoft.com/en-us/library/windows/desktop/dn553408%28v=vs.85%29.aspx

声称

GetSystemTimePreciseAsFileTime提供的系统时间为<1us resolution。

但这只是关于准确的时间戳。如果您需要实际执行1 ms延迟(例如处理事件),则需要RTOS,而不是桌面插件。

答案 1 :(得分:1)

您可以使用C / C ++中time.h头文件提供的功能。

#include <time.h> 
clock_t start, end; 
double cpu_time_used; 
int main()
{
    start = clock();
    /* Do the work. */ 
    end = clock(); 
    cpu_time_used = ((double)(end-start)/ CLOCKS_PER_SEC);
}

答案 2 :(得分:1)

您可以使用QDateTime类并使用适当的格式转换当前时间:

QDateTime::currentDateTime().toString("yyyy/MM/dd hh:mm:ss,zzz")

其中&#39; z &#39;对应于毫秒精度。

答案 3 :(得分:0)

一种常见的方法是扩大你正在做的事情并连续做10-100次,这样你就可以通过将结果除以10来更准确地读取你正在做的事情。 -100。

但是,获得毫秒精确的时间读数几乎没用,因为你没有100%的cpu时间,这意味着如果操作系统提供另一个进程,你的读数将比1毫秒更大的差异在你做你的行动时计算时间。