我需要知道我的节目在几秒钟内完成的时间。只是经过的时间,我之间没有做任何事情,所以我不需要两个事件之间的时间,我想做的就是已经在代码中了。
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
答案 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万才能在几秒钟内得到答案。