如何衡量程序所花费的时间

时间:2012-07-02 02:17:57

标签: c++ valgrind

我想测量我的C ++程序所用的时间,但是,如果我使用:

time_t begin, end;
time_t(&begin);
func(); //my function...it contains the code whose elapsed time I want to measure
time(&end);
cout<<"\n Time elapsed:"<<difftime(end, begin) <<" seconds"<<endl;

我得到的时间是0秒。

gprof在我的情况下也不起作用,因为它表明它不能分配我的程序所需的内存量。

还有其他方法可以衡量我的计划所需的时间。 Valgrind的massif工具确实显示了快照所花费的时间,但文档没有提到它是以毫秒还是微秒为单位。

请建议合适的方式?

如果我可以用毫秒来测量时间,那就太好了。

3 个答案:

答案 0 :(得分:0)

您可以使用如下所示的代码。

clock_t start = clock();     
 // Code here...
clock_t ticks = clock()-start;     
std::cout << "Time Taken:" << (double)ticks/CLOCKS_PER_SEC << "\n"; 

答案 1 :(得分:0)

答案 2 :(得分:0)

一种可能性是自己生成程序(CreateProcess在Windows上,fork在类Unix系统上)。然后,等待孩子退出(Windows上为WaitForSingleObject,Unix上为waitpid)。最后,获取子进程的时间(Windows上为GetProcessTimes,Unix上为times。)

这将给出以毫秒为单位的时间,并将挂起时间与CPU时间分开。当/如果你同时在同一系统上运行其他东西时,后者特别方便(你仍然可以使用静态系统获得更好的准确性,但可以保持合理的接近)。