5 #include "alsutils/config.hpp" 11 template<
class ...T>
Timer(T... names)
12 : start(std::chrono::high_resolution_clock::now()),
20 const std::chrono::high_resolution_clock::time_point start;
28 #define ALSVINN_MAKE_TIMER_VARIABLE_NAME1(X) timer##X 29 #define ALSVINN_MAKE_TIMER_VARIABLE_NAME2(X, Y) timer##X##Y 30 #define ALSVINN_MAKE_TIMER_VARIABLE_NAME3(X,Y, Z) timer##X##Y##Z 31 #define ALSVINN_MAKE_TIMER_VARIABLE_NAME4(X,Y, Z,V) timer##X##Y##Z##V 32 #define ALSVINN_MAKE_TIMER_VARIABLE_NAME5(X,Y, Z,V,W) timer##X##Y##Z##V##W 33 #define ALSVINN_MAKE_TIMER_VARIABLE_NAME6(X,Y, Z,V,W,Q) timer##X##Y##Z##V##W##Q 35 #define ALSVINN_MAKE_TIMER_STRINGS1(X) #X 36 #define ALSVINN_MAKE_TIMER_STRINGS2(X, Y) #X,#Y 37 #define ALSVINN_MAKE_TIMER_STRINGS3(X,Y, Z) #X,#Y,#Z 38 #define ALSVINN_MAKE_TIMER_STRINGS4(X,Y, Z,V) #X, #Y, #Z,#V 39 #define ALSVINN_MAKE_TIMER_STRINGS5(X,Y, Z,V,W) #X, #Y, #Z, #V, #W 40 #define ALSVINN_MAKE_TIMER_STRINGS6(X,Y, Z,V,W, Q) #X, #Y, #Z, #V, #W, #Q 43 #define GET_MACRO(_1,_2,_3, _4, _5, _6, NAME,...) NAME 44 #define ALSVINN_MAKE_TIMER_VARIABLE_NAME(...) GET_MACRO(__VA_ARGS__, ALSVINN_MAKE_TIMER_VARIABLE_NAME6, ALSVINN_MAKE_TIMER_VARIABLE_NAME5, ALSVINN_MAKE_TIMER_VARIABLE_NAME4, ALSVINN_MAKE_TIMER_VARIABLE_NAME3, ALSVINN_MAKE_TIMER_VARIABLE_NAME2, ALSVINN_MAKE_TIMER_VARIABLE_NAME1)(__VA_ARGS__) 45 #define ALSVINN_MAKE_TIMER_STRINGS(...) GET_MACRO(__VA_ARGS__, ALSVINN_MAKE_TIMER_VARIABLE_NAME6, ALSVINN_MAKE_TIMER_STRINGS5, ALSVINN_MAKE_TIMER_STRINGS4,ALSVINN_MAKE_TIMER_STRINGS3, ALSVINN_MAKE_TIMER_STRINGS2, ALSVINN_MAKE_TIMER_STRINGS1)(__VA_ARGS__) 47 #ifdef ALSVINN_USE_TIMERS 48 #define ALSVINN_TIME_BLOCK(...) ::alsutils::timer::Timer ALSVINN_MAKE_TIMER_VARIABLE_NAME(__VA_ARGS__) (ALSVINN_MAKE_TIMER_STRINGS(__VA_ARGS__)) 50 #define ALSVINN_TIME_BLOCK(...) Timer(T... names)
Definition: Timer.hpp:11
Various utilities for mpi and cuda.
Definition: Factory.hpp:3
~Timer()
Definition: Timer.cpp:6
Definition: TimerData.hpp:10
Definition: TimerDatabase.hpp:7