mte*_*aha 7 c linux time clock
我试图计算一个函数用来运行的滴答数,并使用这样的clock()函数来计算:
unsigned long time = clock();
myfunction();
unsigned long time2 = clock() - time;
printf("time elapsed : %lu",time2);
Run Code Online (Sandbox Code Playgroud)
但问题是它返回的值是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,但增量可以较不频繁地发生(每秒100次是一个公共频率).返回值必须定义为CLOCKS_PER_SEC以秒为单位获取时间.