我已经搜索过,但找不到与 matlab tic/toc 函数等效的函数来简单地在控制台上显示程序进行处理所需的时间。(理想情况下,我想将 tic(开始计时器)和 toc(结束计时器)放在程序中的任何位置。
有什么建议么?
我找到了我要找的东西。包括:
#include <ctime>
然后在开头:
time_t tstart, tend;
tstart = time(0);
最后在结束之前:
tend = time(0);
cout << "It took "<< difftime(tend, tstart) <<" second(s)."<< endl;
您可以查看可能更便携的boost date_time 模块。
如果您在 linux 上,则可以使用该功能
clock_gettime();
如果在 Windows 上尝试
QueryPerformanceCounter()
您可以搜索这些以获取具体的实施细节。我不知道的其他操作系统。毫无疑问,有许多其他方法可以实现相同的目标,但如果您没有得到其他响应,那么这些是一个合理的起点。
通过使用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;
}