我在linux上使用time命令来测量我的程序花了多长时间,并且在我的代码中我将计时器用于计算时间
time took calculated by program: 71.320 sec
real 1m27.268s
user 1m7.607s
sys 0m3.785s
我不知道为什么我的程序实时超过计算,如何找到原因并解决它?
=============================================== =======
这是我在代码中计算时间的方法;
clock_t cl;
cl = clock();
do_some_work();
cl = clock() - cl;
float seconds = 1.0 * cl / CLOCKS_PER_SEC;
printf("time took: %.3f sec\n", seconds);
答案 0 :(得分:14)
启动进程总是有开销,启动运行时,关闭程序和时间本身可能也有开销。
最重要的是,在一个多进程操作系统中,您的进程可以“切换”,这意味着其他进程在您处于暂停状态时运行。这也会使时间变得混乱。
让我解释一下时间的输出:
real
表示实际的时钟时间,包括所有开销。user
是在实际计划中花费的时间。sys
是内核系统花费的时间(例如我之前谈过的转换)请注意user + sys
非常接近您的时间:1m7.607s + 0m3.785s == 71.392s
。
最后,你是如何计算时间的?没有这些信息,很难确切地说出问题(如果有的话)是什么。