來自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模板](http://en.wikipedia.org/wiki/Variadic_template)這樣做,如果使用[C++ 11] (http://en.wikipedia.org/wiki/C++11)。或者只是一個[預處理器](http://en.wikipedia.org/wiki/C_preprocessor)宏。 – 2014-10-01 07:36:29