+-
time.h中的clock()精度
我试图计算一个函数用来运行的滴答数,并使用clock()函数这样做:

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

但问题是它返回的值是10000的倍数,我认为是CLOCK_PER_SECOND.是否存在更精确的方法或等效函数值?

我正在使用Ubuntu 64位,但是如果该解决方案可以在Windows和Windows等其他系统上运行,我更愿意苹果系统.

最佳答案
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定义,以秒为单位获取时间.

点击查看更多相关文章

转载注明原文:time.h中的clock()精度 - 乐贴网