为什么我的c程序花费的时间超过了自己计算的时间?

时间:2012-03-09 23:21:56

标签: c linux

我在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);

1 个答案:

答案 0 :(得分:14)

启动进程总是有开销,启动运行时,关闭程序和时间本身可能也有开销。

最重要的是,在一个多进程操作系统中,您的进程可以“切换”,这意味着其他进程在您处于暂停状态时运行。这也会使时间变得混乱。

让我解释一下时间的输出:

  • real表示实际的时钟时间,包括所有开销。
  • user是在实际计划中花费的时间。
  • sys是内核系统花费的时间(例如我之前谈过的转换)

请注意user + sys非常接近您的时间:1m7.607s + 0m3.785s == 71.392s

最后,你是如何计算时间的?没有这些信息,很难确切地说出问题(如果有的话)是什么。