clock()time.h的精度
我正在尝试计算函数用于运行的滴答声的数量,并使用clock()
像这样的函数来这样做:
unsigned long time = clock();myfunction();
unsigned long time2 = clock() - time;
printf("time elapsed : %lu",time2);
但是问题在于它返回的值是10000的倍数,我认为是CLOCK_PER_SECOND
。有没有一种方法或等效函数值更精确?
我使用的是64位Ubuntu,但是希望该解决方案可以在Windows和Mac OS等其他系统上运行。
回答:
POSIX中有许多更准确的计时器。
gettimeofday()
-正式淘汰,但可广泛使用;微秒的分辨率。clock_gettime()
- 纳秒级分辨率的替代品gettimeofday()
(但不一定广泛可用;在Solaris的旧版本中,需要-lposix4
链接)。
还有其他亚秒级计时器,它们或多或少具有上古性,可移植性和分辨率,包括:
ftime()
-毫秒分辨率(在POSIX 2004中标记为“旧版”;在POSIX 2008中未标记)。clock()
-您已经知道。请注意,它测量的是CPU时间,而不是经过的时间(挂钟)。times()
-CLK_TCK
或HZ
。请注意,这将测量父进程和子进程的CPU时间。
不要使用ftime()
或times()
除非有没有好。最终的后备但不满足您的即时要求是
time()
-一秒钟的分辨率。
该clock()
函数以表示,单位为CLOCKS_PER_SEC
,POSIX
要求该值为1,000,000,但是增量的发生频率可能较低(每秒100次是一个公共频率)。返回值必须定义为CLOCKS_PER_SEC
以秒为单位获取时间。
以上是 clock()time.h的精度 的全部内容, 来源链接: utcz.com/qa/425744.html