如何在C ++中使用matlab tic toc?

时间:2012-11-21 02:01:19

标签: c++

在matlab中:

tic
do something ...
toc

我尝试使用此功能:

#define tic      double tic_t = clock();
#define toc      std::cout << (clock() - tic_t)/CLOCKS_PER_SEC \
                           << " seconds" << std::endl;

现在我可以用C ++做到这一点:

tic
doSomething();
toc

问题是我无法在函数内多次调用它,因为tic_t将被定义多次。 我想做这样的事情:

tic
doSomething1();
toc
tic
doSomething2();
toc

2 个答案:

答案 0 :(得分:14)

我将它实现为堆栈。然后,只要你在每toc()之后拨打tic(),你就可以递归,多次调用,做你想做的任何事情,并且不会中断。作为奖励,您不必使用宏:

#include <iostream>
#include <stack>
#include <ctime>

std::stack<clock_t> tictoc_stack;

void tic() {
    tictoc_stack.push(clock());
}

void toc() {
    std::cout << "Time elapsed: "
              << ((double)(clock() - tictoc_stack.top())) / CLOCKS_PER_SEC
              << std::endl;
    tictoc_stack.pop();
}

int main(int argc, char *argv[]) {
    tic();
    doSomething();
    toc();
    return 0;
}

答案 1 :(得分:2)

double tic_t;作为全局,#define tic tic_t = clock();或添加您在每种方法顶部使用的#define tictoc_init double tic_t(并按上述方式更改tic

第二种方法更好,因为“doSomething()”可能包含会覆盖全局变量的抽搐和toc。