gpt4 book ai didi

clock() 时间精度.h

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

我正在尝试计算一个函数用于运行的滴答数,并使用 clock() 函数来计算,如下所示:

unsigned long time = clock();
myfunction();
unsigned long time2 = clock() - time;
printf("time elapsed : %lu",time2);

但问题是它返回的值是 10000 的倍数,我认为是 CLOCK_PER_SECOND。有没有更精确的方法或等效函数值?

我正在使用 Ubuntu 64 位,但如果该解决方案可以在 Windows 和 Mac OS 等其他系统上运行,我会更喜欢。

最佳答案

POSIX 中有许多更准确的计时器。

  • gettimeofday() - 正式过时,但非常广泛使用;微秒分辨率。
  • clock_gettime() - gettimeofday() 的替代品(但不一定广泛使用;在旧版本的 Solaris 上,需要 -lposix4 进行链接),分辨率为纳秒级。

还有其他或多或少的古老、可移植性和分辨率的亚秒计时器,包括:

  • ftime() - 毫秒分辨率(在 POSIX 2004 中标记为“传统”;在 POSIX 2008 中未标记)。
  • clock() - 你已经知道了。请注意,它测量的是 CPU 时间,而不是经过的(挂钟)时间。
  • times() - CLK_TCKHZ。请注意,这会测量父进程和子进程的 CPU 时间。

不要使用ftime()times() 除非没有更好的方法。最终的回退,但不满足您的即时要求,是

clock()函数以CLOCKS_PER_SEC为单位报告,要求为1,000,000通过 POSIX,但增量可能发生的频率较低(每秒 100 次是一个常见频率)。返回值必须除以 CLOCKS_PER_SEC 以获得以秒为单位的时间。

关于clock() 时间精度.h,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8594277/

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