用C ++编写的matlab tic toc

时间:2012-06-18 14:52:29

标签: c++ time timer

我已经搜索了但是我找不到matlab tic / toc函数的等价物来简单地在控制台上显示程序进行处理的时间。 (理想情况下,我想把tic(启动计时器)和toc(结束计时器)放在程序的任何地方。

有什么建议吗?

4 个答案:

答案 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;
}