在linux中计算时间:粒度和精度

在linux中计算时间:粒度和精度,第1张

概述在linux中计算时间粒度精度

**********************原始编辑**********************

我正在使用不同types的时钟在liNUX系统中获取时间:

rdtsc,gettimeofday,clock_gettime

并已经阅读了这样的各种线程:

我可以在linux上获得什么样的最佳时间分辨率?

应用程序不会看到系统时区更改,直到重新启动

如何获得perl系统调用的cpu时间?

windows上的微秒分辨率时间戳

linux中用户空间的高精度时序

每次login和注销windows XP时,如何logging时间?

如何获得linux gettimeofday()的微秒时间,它的准确度是多less?

我如何测量C中的时间间隔?

相当于gettimeofday的速度

粒度在时间函数

为什么clock_gettime如此不稳定?

但是我有点困惑:

粒度,分辨率,精度,准确度有什么区别?

粒度(或分辨率或精度)和准确性是不一样的东西(如果我是正确的…)

例如,在使用“clock_gettime”时 ,精度为10ms,如下所示:

struct timespec res; clock_getres( CLOCK_REALTIME,&res):

和粒度(定义为每秒刻度)是100Hz(或10ms),正如我在执行时得到的那样:

long ticks_per_sec = sysconf(_SC_CLK_TCK);

正如上面的代码所表明的那样,准确度是纳秒级的:

struct timespec gettime_Now;

clock_gettime(CLOCK_REALTIME,&gettime_Now); time_difference = gettime_Now.tv_nsec – start_time;

在下面的链接中,我看到这是linux的全局粒度定义,最好不要改变它:

http://wwwagss.informatik.uni-kl.de/Projekte/Squirrel/da/node5.HTML#fig:clock:hw

所以我的问题是如果上面这个说法是对的,还有:

a)我们可以看到rdtsc和gettimeofday(使用命令)的粒度是多less?

b)我们可以改变他们(以任何方式)?

提前致谢

**********************编辑no2 **********************

大家好,我testing了一些新的时钟,我想分享信息:

a)在下面的页面中, DavID Terei做了一个很好的程序来比较各种钟表和他们的表演:

https://github.com/dterei/Scraps/tree/master/c/time

b)我也testing过omp_get_wtime,就像Raxman所build议的那样,我发现它的精确度是nsec,但并不比“clock_gettime(就像他们在这个网站上做的那样)好:

http://msdn.microsoft.com/en-us/library/t3282fe5.aspx

我认为这是一个面向窗口的时间函数

使用CLOCK_MONOTONIC的clock_gettime给出比使用CLOCK_REALTIME更好的结果。 这很正常,因为第一个分别计算PROCESSING时间和另一个REAL TIME

c)我也发现了英特尔函数ippGetcpuClocks ,但不是我没有testing它,因为它是必须先注册:

http://software.intel.com/en-us/articles/ipp-downloads-registration-and-licensing/

…或者您可以使用试用版

感谢所有的答复!

C#:WMP,时间戳,以毫秒/十分之一秒为单位

如何更新date和时间控制面板以匹配W32Time服务configuration?

如何识别这个结构中的mYear元素的含义?

时间()保证是闰秒意识?

windows API来触发时间同步

精度是信息量,即您报告的有效位数。 (例如,我是2米,1.8米,1.83米,高1.8322米,所有这些测量都是准确的,但越来越精确。)

准确性是报道的信息与事实之间的关系。 (例如“我身高1.70米”比“1.8米”更精确,但实际上并不准确。)

粒度或分辨率是计时器可以测量的最小时间间隔。 例如,如果您的粒度为1毫秒,那么以纳秒精度报告结果几乎没有意义,因为它不可能精确到这个精度水平。

在linux上,粒度增加的可用计时器是:

clock()从<time.h> (20ms或10ms分辨率?)

从Posix <sys/time.h> gettimeofday() (微秒)

Posix上的clock_gettime() (纳秒?)

在C ++中, <chrono>标题提供了一定程度的抽象,而std::high_resolution_clock试图给你最好的时钟。

总结

以上是内存溢出为你收集整理的在linux中计算时间:粒度和精度全部内容,希望文章能够帮你解决在linux中计算时间:粒度和精度所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1156622.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存