timemory 3.3.0
Modular C++ Toolkit for Performance Analysis and Logging. Profiling API and Tools for C, C++, CUDA, Fortran, and Python. The C++ template API is essentially a framework to creating tools: it is designed to provide a unifying interface for recording various performance measurements alongside data logging and interfaces to other tools.
quirks.hpp File Reference
#include "timemory/mpl/concepts.hpp"
#include "timemory/utility/types.hpp"
#include <ostream>
+ Include dependency graph for quirks.hpp:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  tim::quirk::config< Types >
 a variadic type which holds zero or more quirks that are passed to the constructor of a component bundler. More...
 
struct  tim::quirk::is_config< T >
 
struct  tim::quirk::is_config< config< Types... > >
 
struct  tim::quirk::auto_start
 Will cause non-auto bundlers to invoke start() during construction. If included as a template parameter of the bundler, it will have no effect. Usage: More...
 
struct  tim::quirk::auto_stop
 This quirk is irrelevant. This is the default behavior for all bundlers. See tim::quirk::explicit_stop to suppress this behavior. More...
 
struct  tim::quirk::explicit_start
 Will cause auto bundlers to suppress calling start during construction. If included as a template parameter of the non-auto bundler, it will have no effect. Usage: More...
 
struct  tim::quirk::explicit_stop
 Will cause bundlers to suppress calling stop during destruction. Usage: More...
 
struct  tim::quirk::explicit_push
 Will suppress the implicit push() within start() for the bundlers with this characteristic Usage: More...
 
struct  tim::quirk::explicit_pop
 Will suppress the implicit pop() within stop() for the bundlers with this characteristic. Combining this with tim::quirk::explicit_push will effectively allow the measurements within the bundler to only be recorded locally and statistics to not be updated during intermediate measurements. Usage: More...
 
struct  tim::quirk::exit_report
 Will cause auto-bundlers to write itself to stdout during destruction. Usage: More...
 
struct  tim::quirk::no_init
 Will cause bundlers to suppress calling any routines related to initializing routines during construction. This is useful to override the default-initializer for a bundler type Usage: More...
 
struct  tim::quirk::no_store
 Will cause bundlers to suppress any implicit entries into the component storage. This behavior is the default for tim::lightweight_bundle and is meaningless in that context. It is quite similar to adding both tim::quirk::explicit_push and tim::quirk::explicit_pop, however it effectively propagates tim::quirk::explicit_pop when used within the constructor. Usage: More...
 
struct  tim::quirk::tree_scope
 Will cause bundlers to ignore the global settings and enforce hierarchical storage in the call-graph. Usage: More...
 
struct  tim::quirk::flat_scope
 Will cause bundlers to ignore the global settings and enforce flat storage in the call-graph. Usage: More...
 
struct  tim::quirk::timeline_scope
 Will cause bundlers to ignore the global settings and enforce timeline storage. Usage: More...
 
struct  tim::quirk::stop_last_bundle
 Will cause a bundler to stop the "parent" bundler (of the same type). It can be used as template parameter but be aware that tim::component_tuple<foo, tim::quirk::stop_last_bundle> is NOT the same type as tim::component_tuple<foo>. Usage: More...
 
struct  tim::quirk::unsafe
 When present, this argument instructs to skip any safety checks. Example checks include: checking whether a component is in a stop state before startings, checking whether a component has been started before stopping, checking whether push/pop has been applied before applying the inverse Usage: More...
 

Namespaces

namespace  tim
 
namespace  tim::quirk