Исходя из python Я пытаюсь найти способ вызвать несколько вызовов функций в коде C++. Пока я использую это.синхронизация множества вызовов функций
void my_func(/*some args*/) {
clock_t t_begin = std::clock();
// code
clock_t t_end = std::clock();
double elapsed_secs_U = double(t_end - t_begin)/CLOCKS_PER_SEC;
}
Но это очень повторяющееся явление. И я хотел бы иметь что-то вроде функции оболочки, так что я могу написать:
void timer(func, *args) {
clock_t t_begin = std::clock();
func(*args)
clock_t t_end = std::clock();
double elapsed_secs_U = double(t_end - t_begin)/CLOCKS_PER_SEC;
}
, которые могут быть использованы как:
timer(compute_a, a, b)
timer(compute_b, b, c)
Есть ли способ для достижения этой цели в C++?
PS: Мне нужны тайминги в продуктивных прогонах, таким образом, я не хочу, чтобы перекомпилировать код с профилирующими флагами и вставить его в Valgrind или любого другой инструмент
Я думаю, вы могли бы сделать несколько [variadic template] (http://en.wikipedia.org/wiki/Variadic_template), делая это, используя [C++ 11] (Http://en.wikipedia.org/wiki/C++11). Или просто макрос [препроцессор] (http://en.wikipedia.org/wiki/C_preprocessor). –