gpt4 book ai didi

Linux 上的计算时间 : granularity and precision

转载 作者:IT王子 更新时间:2023-10-29 00:49:38 24 4
gpt4 key购买 nike

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


我在 Linux 系统上使用不同类型的时钟来获取时间:

rdtsc, gettimeofday, clock_gettime

并且已经阅读了诸如此类的各种问题:

但我有点困惑:


粒度、分辨率、精度和准确性之间有什么区别?


粒度(或分辨率或精度)准确性 不是一回事(如果我是对的......)

例如,在使用 "clock_gettime" 时,我得到的精度是 10 毫秒:

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

粒度(定义为每秒滴答数)为 100 赫兹(或 10 毫秒),正如我在执行时得到的:

 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 的粒度是多少(使用命令)?

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


************************编辑号2*********************

我测试了一些新时钟,我想分享信息:

a) 在下面的页面中,David Terei 做了一个很好的程序来比较各种时钟及其性能:

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

b) 我还按照 Raxman 的建议测试了 omp_get_wtime,我发现精度在纳秒,但并不比“clock_gettime”好(就像他们在这个网站上所做的那样):

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

我认为这是一个面向 Windows 的时间函数。

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

c) 我还找到了英特尔函数 ippGetCpuClocks,但我没有测试过它,因为它必须先注册:

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

...或者您可以使用试用版

最佳答案

  • 精度 是信息量,即您报告的有效数字位数。 (例如,我的高度分别为 2 米、1.8 米、1.83 米和 1.8322 米。所有这些测量值都很准确,而且越来越精确。)

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

  • 粒度分辨率 是计时器可以测量的最小时间间隔。例如,如果您的粒度为 1 毫秒,则以纳秒精度报告结果毫无意义,因为它不可能准确到该精度级别。

在 Linux 上,粒度越来越大的可用计时器是:

  • clock()来自 <time.h> (20 毫秒还是 10 毫秒分辨率?)

  • gettimeofday()来自 Posix <sys/time.h> (微秒)

  • clock_gettime()在 Posix 上(纳秒?)

在 C++ 中,<chrono> header 提供了一定程度的抽象,并且 std::high_resolution_clock尝试为您提供最好的时钟。

关于Linux 上的计算时间 : granularity and precision,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16740014/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com