我正在尝试计算函数用于运行的滴答声的数量,并使用clock()像这样的函数来这样做:
clock()
unsigned long time = clock(); myfunction(); unsigned long time2 = clock() - time; printf("time elapsed : %lu",time2);
但是问题在于它返回的值是10000的倍数,我认为是CLOCK_PER_SECOND。有没有一种方法或等效函数值更精确?
CLOCK_PER_SECOND
我使用的是64位Ubuntu,但是希望该解决方案可以在Windows和Mac OS等其他系统上运行。
POSIX中有许多更准确的计时器。
gettimeofday()
clock_gettime()
-lposix4
还有其他亚秒级计时器,它们或多或少具有上古性,可移植性和分辨率,包括:
ftime()
times()
CLK_TCK
HZ
不要使用ftime()或times()除非有没有好。最终的后备但不满足您的即时要求是
time()
该clock()函数以表示,单位为CLOCKS_PER_SEC,POSIX 要求该值为1,000,000,但是增量的发生频率可能较低(每秒100次是一个公共频率)。返回值必须定义为CLOCKS_PER_SEC以秒为单位获取时间。
CLOCKS_PER_SEC