Kanzi 3.9.10
kanzi::IntervalProfiler Class Reference

The interval profiler. More...

#include <kanzi/core/profiling/interval_profiler.hpp>

Inheritance diagram for kanzi::IntervalProfiler:
[legend]

Public Types

typedef AbstractValueProfiler< IntervalProfilerSampleData, IntervalProfilerSampleStatisticsBaseValueProfiler
 The typedef of the base value profiler class.
 
- Public Types inherited from kanzi::AbstractValueProfiler< IntervalProfilerSampleData, IntervalProfilerSampleStatistics >
typedef function< void(AbstractValueProfiler &) FullBufferCallback)
 The typedef used for full buffer callback.
 
typedef weak_ptr< void > FullBufferCallbackHandle
 The typedef used for full buffer callback handle.
 
- Public Types inherited from kanzi::AbstractProfiler
enum  DataType {
  DataTypeNotDefined , DataTypeBoolean , DataTypeUint64 , DataTypeFloat ,
  DataTypeString , DataTypeCount
}
 Supported profiling data field value types. More...
 
typedef variant< monostate, bool, uint64_t, float, string > Value
 Container for profiling data field value.
 

Public Member Functions

void addSample (const IntervalProfilerSampleData &sample)
 Adds a new profiling data sample to the profiler.
 
const IntervalProfilerSampleStatisticsgetProfilingStatistics () const
 Gets a reference to interval profiling statistics.
 
const IntervalProfilerSampleDatagetSample (size_t index) const
 Accesses a profiling data sample stored in the sample buffer.
 
- Public Member Functions inherited from kanzi::AbstractValueProfiler< IntervalProfilerSampleData, IntervalProfilerSampleStatistics >
FullBufferCallbackHandle addFullBufferCallback (FullBufferCallback callback)
 Adds a new full buffer callback.
 
void removeFullBufferCallback (const FullBufferCallbackHandle &callbackHandle)
 Removes a full buffer callback.
 
void resetSampleData ()
 Resets the aggregate profiling data and sample buffer.
 
- Public Member Functions inherited from kanzi::AbstractProfiler
size_t getAggregateDataFieldCount () const
 Gets the number of aggregate data fields.
 
string getAggregateDataFieldName (size_t fieldIndex) const
 Gets the name of an aggregate data field.
 
Value getAggregateDataFieldValue (size_t fieldIndex) const
 Gets the value of an aggregate profiling data field.
 
const ProfilingCategorygetCategory () const
 Gets a reference to the profiling category assigned to the profiler.
 
string_view getName () const
 Gets the name of the profiler.
 
size_t getSampleCount () const
 Gets the number of collected profiling data samples.
 
size_t getSampleFieldCount () const
 Gets the number of sample data fields.
 
DataType getSampleFieldDataType (size_t fieldIndex) const
 Gets the data type of a data sample field.
 
string getSampleFieldName (size_t fieldIndex) const
 Gets the name of a data sample field.
 
Value getSampleFieldValue (size_t sampleIndex, size_t fieldIndex) const
 Gets the value of a profiling data sample field.
 
void logAggregateData () const
 Logs aggregate profiling data.
 
void logAllData () const
 Logs all profiling data.
 
virtual ~AbstractProfiler ()
 Destructor.
 

Static Public Member Functions

static IntervalProfilerSharedPtr create (string_view name, const ProfilingCategory &category, size_t sampleBufferSize)
 Creates a new interval profiler.
 
- Static Public Member Functions inherited from kanzi::AbstractProfiler
static DataType getDataType (const Value &value)
 Gets the type of the data stored in a profiling data field.
 

Protected Member Functions

size_t getAggregateDataFieldCountOverride () const override
 The override of AbstractProfiler::getAggregateDataFieldCountOverride().
 
string getAggregateDataFieldNameOverride (size_t fieldIndex) const override
 The override of AbstractProfiler::getAggregateDataFieldNameOverride().
 
Value getAggregateDataFieldValueOverride (size_t fieldIndex) const override
 The override of AbstractProfilerRegistry::getAggregateDataFieldValueOverride().
 
size_t getSampleFieldCountOverride () const override
 The override of AbstractProfiler::getSampleFieldCountOverride().
 
DataType getSampleFieldDataTypeOverride (size_t fieldIndex) const override
 The override of AbstractProfiler::getSampleFieldDataTypeOverride().
 
string getSampleFieldNameOverride (size_t fieldIndex) const override
 The override of AbstractProfiler::getSampleFieldNameOverride().
 
Value getSampleFieldValueOverride (size_t sampleIndex, size_t fieldIndex) const override
 The override of AbstractProfilerRegistry::getSampleFieldValueOverride().
 
 IntervalProfiler (const IntervalProfiler &rhs) KZ_DELETED_FUNCTION
 Deleted copy constructor, preventing copying of the object.
 
 IntervalProfiler (string_view name, const ProfilingCategory &category, size_t sampleBufferSize)
 Constructor.
 
IntervalProfileroperator= (const IntervalProfiler &rhs) KZ_DELETED_FUNCTION
 Deleted assignment operator, preventing assignment of the object.
 
- Protected Member Functions inherited from kanzi::AbstractValueProfiler< IntervalProfilerSampleData, IntervalProfilerSampleStatistics >
 AbstractValueProfiler (string_view name, const ProfilingCategory &category, size_t sampleBufferSize)
 Constructor.
 
void addSample (const IntervalProfilerSampleData &sample)
 Adds a new profiling data sample.
 
void addSample (IntervalProfilerSampleData &&sample)
 Adds a new movable profiling data sample to the profiler.
 
void checkBufferFull ()
 Performs all buffer full callbacks and clears samples if buffer is full.
 
const IntervalProfilerSampleDatagetSample (size_t index) const
 Accesses a profiling data sample stored in the sample buffer.
 
size_t getSampleCountOverride () const override
 Override of AbstractProfiler::getSampleCountOverride().
 
void resetSampleBufferSize (size_t sampleBufferSize)
 Resets the size of the sample buffer.
 
- Protected Member Functions inherited from kanzi::AbstractProfiler
 AbstractProfiler (string_view name, const ProfilingCategory &category)
 Constructor.
 
virtual void logAggregateDataOverride () const
 To implement your own logging of aggregate profiling data, override this function in the derived profiler class.
 
virtual void logAllDataOverride () const
 To implement your own logging of all profiling data, override this function in the derived profiler class.
 

Additional Inherited Members

- Protected Types inherited from kanzi::AbstractValueProfiler< IntervalProfilerSampleData, IntervalProfilerSampleStatistics >
typedef IntervalProfilerSampleStatistics AggregateProfilingDataType
 The aggregate profiling data type typedef used in derived classes.
 
typedef vector< FullBufferCallbackSharedPtrFullBufferCallbackContainer
 The typedef used for container of full buffer callback shared pointers.
 
typedef shared_ptr< FullBufferCallback > FullBufferCallbackSharedPtr
 The typedef used for shared pointer to full buffer callback.
 
typedef IntervalProfilerSampleData SampleDataType
 The sample data type typedef used in derived classes.
 
- Static Protected Member Functions inherited from kanzi::AbstractValueProfiler< IntervalProfilerSampleData, IntervalProfilerSampleStatistics >
static void invokeBufferFullCallback (AbstractValueProfiler &profiler, FullBufferCallbackSharedPtr &callback)
 Internal helper function used by checkBufferFull.
 
- Protected Attributes inherited from kanzi::AbstractValueProfiler< IntervalProfilerSampleData, IntervalProfilerSampleStatistics >
IntervalProfilerSampleStatistics m_aggregateProfilingData
 The aggregate profiling data.
 
FullBufferCallbackContainer m_fullBufferCallbacks
 The container of buffer full callbacks.
 
circular_buffer< IntervalProfilerSampleDatam_sampleBuffer
 The profiling data sample buffer.
 

Detailed Description

The interval profiler.

Use Profiling macros to profile codepath execution time.

The interval profiler collects samples of IntervalProfilerSampleData type which include information about interval duration and start point. For details on the information included in the sample, see IntervalProfilerSampleData. For an example of how interval profiling sample is collected in scope profiling, see IntervalProfilerSampler.

To add the collected sample to the profiler, use the addSample() function.

The IntervalProfiler keeps samples in a circular sample buffer. Whenever a new sample is added to the profiler, the statistics data is updated. To access the statistics data, use getProfilingStatistics().

Member Typedef Documentation

◆ BaseValueProfiler

Constructor & Destructor Documentation

◆ IntervalProfiler() [1/2]

kanzi::IntervalProfiler::IntervalProfiler ( string_view name,
const ProfilingCategory & category,
size_t sampleBufferSize )
explicitprotected

Constructor.

Parameters
nameThe name of the profiler.
categoryThe category assigned to the profiler.
sampleBufferSizeThe maximum size of the sample buffer.

◆ IntervalProfiler() [2/2]

kanzi::IntervalProfiler::IntervalProfiler ( const IntervalProfiler & rhs)
protected

Deleted copy constructor, preventing copying of the object.

Member Function Documentation

◆ create()

static IntervalProfilerSharedPtr kanzi::IntervalProfiler::create ( string_view name,
const ProfilingCategory & category,
size_t sampleBufferSize )
static

Creates a new interval profiler.

Parameters
nameThe name of the new profiler.
categoryThe profiling category assigned to the profiler.
sampleBufferSizeThe maximum size of the profiling sample buffer.
Returns
The IntervalProfilerSharedPtr pointing to new profiler.

◆ addSample()

void kanzi::IntervalProfiler::addSample ( const IntervalProfilerSampleData & sample)

Adds a new profiling data sample to the profiler.

Parameters
sampleThe profiling data sample.

◆ getSample()

const IntervalProfilerSampleData & kanzi::IntervalProfiler::getSample ( size_t index) const
inline

Accesses a profiling data sample stored in the sample buffer.

Parameters
indexThe index of the sample.
Returns
The profiling data sample.

◆ getProfilingStatistics()

const IntervalProfilerSampleStatistics & kanzi::IntervalProfiler::getProfilingStatistics ( ) const
inline

Gets a reference to interval profiling statistics.

Returns
The reference to interval profiling statistics.

◆ operator=()

IntervalProfiler & kanzi::IntervalProfiler::operator= ( const IntervalProfiler & rhs)
protected

Deleted assignment operator, preventing assignment of the object.

◆ getAggregateDataFieldCountOverride()

size_t kanzi::IntervalProfiler::getAggregateDataFieldCountOverride ( ) const
overrideprotectedvirtual

The override of AbstractProfiler::getAggregateDataFieldCountOverride().

Returns
The number of aggregate data fields.

Implements kanzi::AbstractProfiler.

◆ getAggregateDataFieldNameOverride()

string kanzi::IntervalProfiler::getAggregateDataFieldNameOverride ( size_t fieldIndex) const
overrideprotectedvirtual

The override of AbstractProfiler::getAggregateDataFieldNameOverride().

Parameters
fieldIndexThe index of the field.
Returns
The number of aggregate data fields.

Implements kanzi::AbstractProfiler.

◆ getSampleFieldCountOverride()

size_t kanzi::IntervalProfiler::getSampleFieldCountOverride ( ) const
overrideprotectedvirtual

The override of AbstractProfiler::getSampleFieldCountOverride().

Returns
The number of sample data fields.

Implements kanzi::AbstractProfiler.

◆ getSampleFieldNameOverride()

string kanzi::IntervalProfiler::getSampleFieldNameOverride ( size_t fieldIndex) const
overrideprotectedvirtual

The override of AbstractProfiler::getSampleFieldNameOverride().

Parameters
fieldIndexThe index of the sample field.
Returns
The name of the sample field.

Implements kanzi::AbstractProfiler.

◆ getSampleFieldDataTypeOverride()

DataType kanzi::IntervalProfiler::getSampleFieldDataTypeOverride ( size_t fieldIndex) const
overrideprotectedvirtual

The override of AbstractProfiler::getSampleFieldDataTypeOverride().

Parameters
fieldIndexThe index of the field.
Returns
The data type of sample field.

Implements kanzi::AbstractProfiler.

◆ getAggregateDataFieldValueOverride()

Value kanzi::IntervalProfiler::getAggregateDataFieldValueOverride ( size_t fieldIndex) const
overrideprotectedvirtual

The override of AbstractProfilerRegistry::getAggregateDataFieldValueOverride().

Parameters
fieldIndexThe index of the aggregate profiling data field.
Returns
The value of the aggregate profiling data field.

Implements kanzi::AbstractProfiler.

◆ getSampleFieldValueOverride()

Value kanzi::IntervalProfiler::getSampleFieldValueOverride ( size_t sampleIndex,
size_t fieldIndex ) const
overrideprotectedvirtual

The override of AbstractProfilerRegistry::getSampleFieldValueOverride().

Parameters
sampleIndexThe index of the profiling data sample.
fieldIndexThe index of the profiling data sample field.
Returns
The value of the profiling data sample field.

Implements kanzi::AbstractProfiler.


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