我想测量我的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工具确实显示了快照所花费的时间,但文档没有提到它是以毫秒还是微秒为单位。
请建议合适的方式?
如果我可以用毫秒来测量时间,那就太好了。
答案 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)
使用std :: chrono。
http://en.cppreference.com/w/cpp/chrono/duration
你可能还想看看facebook的基准实用程序 https://github.com/facebook/folly/blob/master/folly/docs/Benchmark.md
答案 2 :(得分:0)
一种可能性是自己生成程序(CreateProcess
在Windows上,fork
在类Unix系统上)。然后,等待孩子退出(Windows上为WaitForSingleObject
,Unix上为waitpid
)。最后,获取子进程的时间(Windows上为GetProcessTimes
,Unix上为times
。)
这将给出以毫秒为单位的时间,并将挂起时间与CPU时间分开。当/如果你同时在同一系统上运行其他东西时,后者特别方便(你仍然可以使用静态系统获得更好的准确性,但可以保持合理的接近)。