13

我已经搜索过,但找不到与 matlab tic/toc 函数等效的函数来简单地在控制台上显示程序进行处理所需的时间。(理想情况下,我想将 tic(开始计时器)和 toc(结束计时器)放在程序中的任何位置。

有什么建议么?

4

4 回答 4

24

我找到了我要找的东西。包括:

#include <ctime>

然后在开头:

 time_t tstart, tend; 
 tstart = time(0);

最后在结束之前:

tend = time(0); 
cout << "It took "<< difftime(tend, tstart) <<" second(s)."<< endl;
于 2012-08-16T06:14:34.267 回答
3

您可以查看可能更便携的boost date_time 模块。

于 2012-06-18T19:57:59.163 回答
2

如果您在 linux 上,则可以使用该功能

    clock_gettime();

如果在 Windows 上尝试

    QueryPerformanceCounter()

您可以搜索这些以获取具体的实施细节。我不知道的其他操作系统。毫无疑问,有许多其他方法可以实现相同的目标,但如果您没有得到其他响应,那么这些是一个合理的起点。

于 2012-06-18T14:59:36.067 回答
2

通过使用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;
}
于 2020-08-13T08:31:07.240 回答