我已经搜索了但是我找不到matlab tic / toc函数的等价物来简单地在控制台上显示程序进行处理的时间。 (理想情况下,我想把tic(启动计时器)和toc(结束计时器)放在程序的任何地方。
有什么建议吗?
答案 0 :(得分:21)
我找到了我要找的东西。 包括:
#include <ctime>
然后在开头:
time_t tstart, tend;
tstart = time(0);
最后在结束之前:
tend = time(0);
cout << "It took "<< difftime(tend, tstart) <<" second(s)."<< endl;
答案 1 :(得分:3)
如果您使用的是Linux,则可以使用该功能
clock_gettime();
如果在Windows上试试
QueryPerformanceCounter()
您可以谷歌这些以获取具体的实施细节。我不知道的其他操作系统。毫无疑问,还有许多其他方法可以实现同样的目标,但如果你没有得到其他答案,那么这些是合理的起点。
答案 2 :(得分:3)
您可以查看可能更便携的boost date_time module。
答案 3 :(得分:1)
通过使用std::chrono
,您可以编写一个简单的函数,作为Matlab的tic toc:
#include <iostream>
#include <chrono>
#include <thread> // sleep_for, for testing only
void tic(int mode=0) {
static std::chrono::_V2::system_clock::time_point t_start;
if (mode==0)
t_start = std::chrono::high_resolution_clock::now();
else {
auto t_end = std::chrono::high_resolution_clock::now();
std::cout << "Elapsed time is " << (t_end-t_start).count()*1E-9 << " seconds\n";
}
}
void toc() { tic(1); }
int main(int argc, char **argv)
{
tic();
// wait 5 seconds just for testing
std::chrono::seconds sleep_s(5);
std::this_thread::sleep_for(sleep_s);
toc();
return 0;
}