int main(void){
int start = clock();
sleep(5);
int end = clock();
printf("%d", (end - start));
return 0;
}
当我在ubuntu中执行此代码时,我得到结果30;但是,我通过sleep()方法在5秒内暂停该过程。为什么结果等于30?
如何计算流程的暂停时间?
答案 0 :(得分:3)
clock()
函数返回自进程启动以来使用的CPU时间量。要以秒为单位获取数字,您应该除以常数CLOCKS_PER_SEC
。
在大多数情况下,睡眠呼叫中不会使用或只需很少的CPU时间(我总是回零)。
您可以使用time()
获取挂钟时间的秒数:
#include <stdio.h>
#include <time.h>
#include <unistd.h>
int main(void) {
time_t start = time(NULL);
sleep(5);
time_t end = time(NULL);
printf("%.1f\n", difftime(end, start));
return 0;
}
对于时间短的间隔gettimeofday()
可能更有用,因为它提供微秒粒度而不是仅仅秒,如time()
。