Как использовать Matlab Tic Toc в C ++?

в матлабе:

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

3

Решение

Я бы реализовал это как стек. Затем вы можете набирать номер, вызывать его несколько раз, делать все, что вы хотите, и он не сломается, пока вы звоните 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;
}
14

Другие решения

Либо поставить double tic_t; как глобальный, и #define tic tic_t = clock(); или добавить #define tictoc_init double tic_t что вы используете в верхней части каждого метода (и изменить tic как указано выше)

Второй способ лучше, так как «doSomething ()» может содержать метки и метки, которые перезаписывают вашу глобальную переменную.

2

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector