我的代码如下所示:
#include <time.h>
#include <stdio.h>
#include <unistd.h>
int main(void) {
time_t loop_begin, loop_end, scanf_begin, scanf_end;
double loop_time, scanf_time;
int q;
loop_begin = clock();
//some big loop
loop_end = clock();
loop_time = (double)(loop_end - loop_begin) / CLOCKS_PER_SEC;
printf("%.6f\n", loop_time);
scanf_begin = clock();
printf("qwe> ");scanf("%d", &q);
scanf_end = clock();
scanf_time = (double)(scanf_end - scanf_begin) / CLOCKS_PER_SEC;
printf("%.6f\n", scanf_time);
return 0;
}
但输出是这样的:
20.087593
qwe> 543
0.000073
我错过了什么或这是正常的吗?如果这是正常的,你会建议什么?
答案 0 :(得分:2)
clock
测量CPU时间。当您的程序等待按键时,它会在系统调用中被阻止,并且不会占用任何处理器时间。
来自Linux程序员手册:
命名强>
clock
- 确定处理器时间<强>概要强>
#include <time.h> clock_t clock(void);
<强>描述强>
clock()函数返回程序使用的处理器时间的近似值。
返回值
返回的值是到目前为止使用的CPU时间
clock_t
;得到这个号码 秒使用,除以CLOCKS_PER_SEC
。如果使用的处理器时间不是 可用或其值无法表示,函数返回值(clock_t) -1.