我没有在几秒钟内得到经过的时间

时间:2017-10-05 16:40:04

标签: c++

我需要知道我的节目在几秒钟内完成的时间。只是经过的时间,我之间没有做任何事情,所以我不需要两个事件之间的时间,我想做的就是已经在代码中了。

clock_t begin = clock();
float timeElapsed = (float)begin/(CLOCKS_PER_SEC);
cout << timeElapsed << endl;

问题是,正在打印“时间”,但不是几秒钟。我甚至将它与计时器进行了比较,它绝对不是几秒钟。当屏幕上出现“1.27818”之类的东西时,我预计它会是1.27818秒,但显然不是。到达1需要太多时间,而这一次肯定不是一秒钟。这是怎么回事?是不是“(浮动)开始/(CLOCKS_PER_SEC)”应该在几秒钟内返回?

UPDATE
我这样做了:

clock_t begin = clock();
float timeElapsed = (float)(clock() - begin)/(CLOCKS_PER_SEC);
cout << timeElapsed << endl;

但我得到的价值如下:

0
1e-06
1e-06
0
1e-06
1e-06
2e-06
1e-06

3 个答案:

答案 0 :(得分:3)

看一下这个例子:

int main ()
{
  clock_t t;
  int f;
  t = clock();
  printf ("Calculating...\n");
  f = call_some_function();
  printf ("Result: %d\n",f);
  t = clock() - t;
  printf ("It took me %d clicks (%f seconds).\n",t,((float)t)/CLOCKS_PER_SEC);
  return 0;
}

有一点需要注意的是你可能想要减去clock() - 在操作之后开始,以获得操作所用的时间。

答案 1 :(得分:0)

您获得的值在scientific notation,如果您想要简单形式,则应使用std::fixed流操纵器。例如:

std::cout << std::fixed << data;

另外documents关于std::clock()说:

  

只有不同调用std :: clock返回的两个值之间的差异才有意义,因为std :: clock时代的开头不一定与程序的开头一致。 std :: clock time可能比挂钟更快或更慢,具体取决于操作系统为程序提供的执行资源。例如,如果CPU由其他进程共享,则std :: clock时间可能比wall clock慢。另一方面,如果当前进程是多线程的并且有多个执行核心可用,则std :: clock时间可能比挂钟更快。

此页面底部还有一个good example

答案 2 :(得分:0)

您需要一个开始时间和一个结束时间。减去它们然后用CLOCKS_PER_SEC分割。

这样做:

clock_t begin = clock();
/* 

Do your process

*/
clock_t end = clock();
float timeElapsed = (float)(end-begin)/(CLOCKS_PER_SEC);
cout << timeElapsed << endl;

您可以用科学记数法获得答案。请注意,1秒= 10 ^ 6个刻度。您需要将答案乘以100万才能在几秒钟内得到答案。