C经历了时间linux

时间:2013-09-11 15:45:55

标签: c linux

对不起我是C的新手。但是我做错了什么?尝试了几乎所有的东西,但仍然无法计算在t1和t2之间执行代码的秒数,总是返回我 完成0.00秒。 感谢您的耐心:)

#include <time.h>

clock_t t1, t2;

t1 = clock();
sleep(5);
t2 = clock();
printf("\nFinished in %.2f seconds.\n\n", (t2-t1)*1.0/CLOCKS_PER_SEC);

3 个答案:

答案 0 :(得分:1)

如果粗粒度(整秒)没问题,那么time(2)time_t就足够了。

示例:

#include <stdio.h>
#include <time.h>
#include <unistd.h>

static time_t t1, t2;

int
main(void)
{
  t1 = time(0);
  (void) sleep(5);
  t2 = time(0);

  (void) printf("\nFinished in %d seconds.\n\n", (int) (t2-t1));

  return 0;
}

答案 1 :(得分:0)

似乎clock_t没有将输入帐户视为“挂起时间”,而是CPU时间。 当CPU休眠5秒钟时,CPU无法有效地执行代码。

答案 2 :(得分:0)

clock()不适合测量经过的时间。它的分辨率通常非常低,它只测量CPU时间,而不是测量时间。如果你的目标是Unix,你应该使用clock_gettime(CLOCK_MONOTONIC, ...)。在Windows上QueryPerformanceCounter()是要使用的API。

值得注意的是gettimeofday()也不合适,因为它受到闰秒和网络时间协议调整的影响。