timemory  3.2.1
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.
tim::component_tuple< Types > Class Template Reference

This is a variadic component wrapper where all components are allocated on the stack and cannot be disabled at runtime. This bundler has the lowest overhead. Accepts unlimited number of template parameters. This bundler is used by tim::auto_tuple whose constructor and destructor invoke the start() and stop() member functions respectively. More...

#include "timemory/variadic/component_tuple.hpp"

+ Collaboration diagram for tim::component_tuple< Types >:

Public Types

using captured_location_t = source_location::captured
 
using bundle_type = bundle< TIMEMORY_API, component_tuple<>, tim::variadic::stack_wrapper_types< concat< Types... > >>
 
using this_type = component_tuple< Types... >
 
using component_type = component_tuple< Types... >
 
using auto_type = auto_tuple< Types... >
 

Public Member Functions

template<typename... Args>
 component_tuple (Args &&...)
 
 ~component_tuple ()=default
 
 component_tuple (const component_tuple &)=default
 
 component_tuple (component_tuple &&) noexcept=default
 
component_tupleoperator= (const component_tuple &rhs)=default
 
component_tupleoperator= (component_tuple &&) noexcept=default
 
template<typename... Args>
 component_tuple (Args &&... args)
 

Detailed Description

template<typename... Types>
class tim::component_tuple< Types >

This is a variadic component wrapper where all components are allocated on the stack and cannot be disabled at runtime. This bundler has the lowest overhead. Accepts unlimited number of template parameters. This bundler is used by tim::auto_tuple whose constructor and destructor invoke the start() and stop() member functions respectively.

Template Parameters
TypesSpecification of the component types to bundle together
void foo()
{
auto bar = bundle_t("foo");
bar.start();
// ...
bar.stop();
}
This is a variadic component wrapper where all components are allocated on the stack and cannot be di...

The above code will record wall-clock, cpu-clock, and peak-rss. The intermediate storage will happen on the stack and when the destructor is called, it will add itself to the call-graph

Definition at line 76 of file component_tuple.hpp.

Member Typedef Documentation

◆ auto_type

template<typename... Types>
using tim::component_tuple< Types >::auto_type = auto_tuple<Types...>

Definition at line 88 of file component_tuple.hpp.

◆ bundle_type

template<typename... Types>
using tim::component_tuple< Types >::bundle_type = bundle<TIMEMORY_API, component_tuple<>, tim::variadic::stack_wrapper_types<concat<Types...> >>

Definition at line 84 of file component_tuple.hpp.

◆ captured_location_t

template<typename... Types>
using tim::component_tuple< Types >::captured_location_t = source_location::captured

Definition at line 82 of file component_tuple.hpp.

◆ component_type

template<typename... Types>
using tim::component_tuple< Types >::component_type = component_tuple<Types...>

Definition at line 87 of file component_tuple.hpp.

◆ this_type

template<typename... Types>
using tim::component_tuple< Types >::this_type = component_tuple<Types...>

Definition at line 86 of file component_tuple.hpp.

Constructor & Destructor Documentation

◆ component_tuple() [1/4]

template<typename... Types>
template<typename... Args>
tim::component_tuple< Types >::component_tuple ( Args &&  ...)

◆ ~component_tuple()

template<typename... Types>
tim::component_tuple< Types >::~component_tuple ( )
default

◆ component_tuple() [2/4]

template<typename... Types>
tim::component_tuple< Types >::component_tuple ( const component_tuple< Types > &  )
default

◆ component_tuple() [3/4]

template<typename... Types>
tim::component_tuple< Types >::component_tuple ( component_tuple< Types > &&  )
defaultnoexcept

◆ component_tuple() [4/4]

template<typename... Types>
template<typename... Args>
tim::component_tuple< Types >::component_tuple ( Args &&...  args)

Definition at line 104 of file component_tuple.hpp.

105 : bundle_type{ std::forward<Args>(args)... }
106 {}
bundle< TIMEMORY_API, component_tuple<>, tim::variadic::stack_wrapper_types< concat< Types... > >> bundle_type

Member Function Documentation

◆ operator=() [1/2]

template<typename... Types>
component_tuple& tim::component_tuple< Types >::operator= ( component_tuple< Types > &&  )
defaultnoexcept

◆ operator=() [2/2]

template<typename... Types>
component_tuple& tim::component_tuple< Types >::operator= ( const component_tuple< Types > &  rhs)
default

The documentation for this class was generated from the following file: