20 #ifndef LIBMESH_LIBMESH_LOGGING_H 21 #define LIBMESH_LIBMESH_LOGGING_H 25 #include "libmesh/libmesh_common.h" 27 #include "libmesh/perf_log.h" 31 #define TOKENPASTE(x, y) x ## y 32 #define TOKENPASTE2(x, y) TOKENPASTE(x, y) 102 #ifdef LIBMESH_ENABLE_PERFORMANCE_LOGGING 104 # define START_LOG(a,b) { libMesh::perflog.push(a,b); } 105 # define STOP_LOG(a,b) { libMesh::perflog.pop(a,b); } 106 # define LOG_SCOPE(a,b) libMesh::PerfItem TOKENPASTE2(perf_item_, __LINE__)(a,b); 107 # define LOG_SCOPE_IF(a,b,enabled) libMesh::PerfItem TOKENPASTE2(perf_item_, __LINE__)(a,b,enabled); 108 # define LOG_SCOPE_WITH(a,b,logger) libMesh::PerfItem TOKENPASTE2(perf_item_, __LINE__)(a,b,true,&logger); 112 # define START_LOG(a,b) {} 113 # define STOP_LOG(a,b) {} 114 # define PALIBMESH_USE_LOG(a,b) {} 115 # define RESTART_LOG(a,b) {} 116 # define LOG_SCOPE(a,b) {} 117 # define LOG_SCOPE_IF(a,b,enabled) {} 118 # define LOG_SCOPE_WITH(a,b,logger) {} 123 #define LOG_CALL(a,b,X) \ 132 #endif // LIBMESH_LIBMESH_LOGGING_H Used for logging something that naturally lasts as long as some enclosing scope, such as the current ...
void fast_push(const char *label, const char *header="")
Push the event label onto the stack, pausing any active event.
PerfLog perflog
A PerfLog object to log performance.
The libMesh namespace provides an interface to certain functionality in the library.
void fast_pop(const char *label, const char *header="") noexcept
Pop the event label off the stack, resuming any lower event.
The PerfLog class allows monitoring of specific events.
PerfItem(const char *label, const char *header, bool enabled=true, PerfLog *my_perflog=&perflog)