The named interval profiler. More...
#include <kanzi/core/profiling/named_interval_profiler.hpp>
Public Types | |
using | BaseValueProfiler = AbstractValueProfiler< NamedIntervalProfilerSampleData, NamedIntervalProfilerSampleStatistics > |
The typedef of the base value profiler class. More... | |
Public Types inherited from kanzi::AbstractValueProfiler< NamedIntervalProfilerSampleData, NamedIntervalProfilerSampleStatistics > | |
typedef function< void(AbstractValueProfiler &)> | FullBufferCallback |
The typedef used for full buffer callback. More... | |
typedef weak_ptr< void > | FullBufferCallbackHandle |
The typedef used for full buffer callback handle. More... | |
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. More... | |
Public Member Functions | |
void | addSample (const NamedIntervalProfilerSampleData &sample) |
Adds a new profiling data sample to the profiler. More... | |
const NamedIntervalProfilerSampleStatistics & | getProfilingStatistics () const |
Gets a reference to interval profiling statistics. More... | |
const NamedIntervalProfilerSampleData & | getSample (size_t index) const |
Accesses a profiling data sample stored in the sample buffer. More... | |
Public Member Functions inherited from kanzi::AbstractValueProfiler< NamedIntervalProfilerSampleData, NamedIntervalProfilerSampleStatistics > | |
FullBufferCallbackHandle | addFullBufferCallback (FullBufferCallback callback) |
Adds a new full buffer callback. More... | |
void | removeFullBufferCallback (const FullBufferCallbackHandle &callbackHandle) |
Removes a full buffer callback. More... | |
void | resetSampleData () |
Resets the aggregate profiling data and sample buffer. More... | |
Public Member Functions inherited from kanzi::AbstractProfiler | |
size_t | getAggregateDataFieldCount () const |
Gets the number of aggregate data fields. More... | |
string | getAggregateDataFieldName (size_t fieldIndex) const |
Gets the name of an aggregate data field. More... | |
Value | getAggregateDataFieldValue (size_t fieldIndex) const |
Gets the value of an aggregate profiling data field. More... | |
const ProfilingCategory & | getCategory () const |
Gets a reference to the profiling category assigned to the profiler. More... | |
string_view | getName () const |
Gets the name of the profiler. More... | |
size_t | getSampleCount () const |
Gets the number of collected profiling data samples. More... | |
size_t | getSampleFieldCount () const |
Gets the number of sample data fields. More... | |
DataType | getSampleFieldDataType (size_t fieldIndex) const |
Gets the data type of a data sample field. More... | |
string | getSampleFieldName (size_t fieldIndex) const |
Gets the name of a data sample field. More... | |
Value | getSampleFieldValue (size_t sampleIndex, size_t fieldIndex) const |
Gets the value of a profiling data sample field. More... | |
void | logAggregateData () const |
Logs aggregate profiling data. More... | |
void | logAllData () const |
Logs all profiling data. More... | |
virtual | ~AbstractProfiler () |
Destructor. More... | |
Static Public Member Functions | |
static NamedIntervalProfilerSharedPtr | create (string_view name, const ProfilingCategory &category, size_t sampleBufferSize) |
Creates a new profiler. More... | |
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. More... | |
Protected Member Functions | |
size_t | getAggregateDataFieldCountOverride () const override |
The override of AbstractProfiler::getAggregateDataFieldCountOverride(). More... | |
string | getAggregateDataFieldNameOverride (size_t fieldIndex) const override |
The override of AbstractProfiler::getAggregateDataFieldNameOverride(). More... | |
Value | getAggregateDataFieldValueOverride (size_t fieldIndex) const override |
The override of AbstractProfilerRegistry::getAggregateDataFieldValueOverride(). More... | |
size_t | getSampleFieldCountOverride () const override |
The override of AbstractProfiler::getSampleFieldCountOverride(). More... | |
DataType | getSampleFieldDataTypeOverride (size_t fieldIndex) const override |
The override of AbstractProfiler::getSampleFieldDataTypeOverride(). More... | |
string | getSampleFieldNameOverride (size_t fieldIndex) const override |
The override of AbstractProfiler::getSampleFieldNameOverride(). More... | |
Value | getSampleFieldValueOverride (size_t sampleIndex, size_t fieldIndex) const override |
The override of AbstractProfilerRegistry::getSampleFieldValueOverride(). More... | |
NamedIntervalProfiler (string_view name, const ProfilingCategory &category, size_t sampleBufferSize) | |
Constructor. More... | |
NamedIntervalProfiler (const NamedIntervalProfiler &rhs)=delete | |
Deleted copy constructor, preventing copying of the object. More... | |
NamedIntervalProfiler & | operator= (const NamedIntervalProfiler &rhs)=delete |
Deleted assignment operator, preventing assignment of the object. More... | |
Protected Member Functions inherited from kanzi::AbstractValueProfiler< NamedIntervalProfilerSampleData, NamedIntervalProfilerSampleStatistics > | |
AbstractValueProfiler (string_view name, const ProfilingCategory &category, size_t sampleBufferSize) | |
Constructor. More... | |
void | addSample (const NamedIntervalProfilerSampleData &sample) |
Adds a new profiling data sample. More... | |
void | addSample (NamedIntervalProfilerSampleData &&sample) |
Adds a new movable profiling data sample to the profiler. More... | |
void | checkBufferFull () |
Performs all buffer full callbacks and clears samples if buffer is full. More... | |
const NamedIntervalProfilerSampleData & | getSample (size_t index) const |
Accesses a profiling data sample stored in the sample buffer. More... | |
size_t | getSampleCountOverride () const override |
Override of AbstractProfiler::getSampleCountOverride(). More... | |
void | resetSampleBufferSize (size_t sampleBufferSize) |
Resets the size of the sample buffer. More... | |
Protected Member Functions inherited from kanzi::AbstractProfiler | |
AbstractProfiler (string_view name, const ProfilingCategory &category) | |
Constructor. More... | |
virtual void | logAggregateDataOverride () const |
To implement your own logging of aggregate profiling data, override this function in the derived profiler class. More... | |
virtual void | logAllDataOverride () const |
To implement your own logging of all profiling data, override this function in the derived profiler class. More... | |
The named interval profiler.
Use Profiling macros to profile codepath execution time.
The interval profiler collects samples of NamedIntervalProfilerSampleData type which include information about interval duration, start point, and extra contextual information about the object that is being operated on. For details on the information included in the sample, see NamedIntervalProfilerSampleData. For an example of how interval profiling sample is collected in scope profiling, see NamedIntervalProfilerSampler.
To add the collected sample to the profiler, use the addSample() function.
The NamedIntervalProfiler 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().
using kanzi::NamedIntervalProfiler::BaseValueProfiler = AbstractValueProfiler<NamedIntervalProfilerSampleData, NamedIntervalProfilerSampleStatistics> |
The typedef of the base value profiler class.
|
explicitprotected |
Constructor.
name | The name of the profiler. |
category | The category assigned to the profiler. |
sampleBufferSize | The maximum size of the sample buffer. |
|
protecteddelete |
Deleted copy constructor, preventing copying of the object.
|
static |
Creates a new profiler.
name | The name of the new profiler. |
category | The profiling category assigned to the profiler. |
sampleBufferSize | The maximum size of the profiling sample buffer. |
void kanzi::NamedIntervalProfiler::addSample | ( | const NamedIntervalProfilerSampleData & | sample | ) |
Adds a new profiling data sample to the profiler.
sample | The profiling data sample. |
|
inline |
Accesses a profiling data sample stored in the sample buffer.
index | The index of the sample. |
|
inline |
Gets a reference to interval profiling statistics.
|
protecteddelete |
Deleted assignment operator, preventing assignment of the object.
|
overrideprotectedvirtual |
The override of AbstractProfiler::getAggregateDataFieldCountOverride().
Implements kanzi::AbstractProfiler.
|
overrideprotectedvirtual |
The override of AbstractProfiler::getAggregateDataFieldNameOverride().
fieldIndex | The index of the field. |
Implements kanzi::AbstractProfiler.
|
overrideprotectedvirtual |
The override of AbstractProfiler::getSampleFieldCountOverride().
Implements kanzi::AbstractProfiler.
|
overrideprotectedvirtual |
The override of AbstractProfiler::getSampleFieldNameOverride().
fieldIndex | The index of the sample field. |
Implements kanzi::AbstractProfiler.
|
overrideprotectedvirtual |
The override of AbstractProfiler::getSampleFieldDataTypeOverride().
fieldIndex | The index of the field. |
Implements kanzi::AbstractProfiler.
|
overrideprotectedvirtual |
The override of AbstractProfilerRegistry::getAggregateDataFieldValueOverride().
fieldIndex | The index of the aggregate profiling data field. |
Implements kanzi::AbstractProfiler.
|
overrideprotectedvirtual |
The override of AbstractProfilerRegistry::getSampleFieldValueOverride().
sampleIndex | The index of the profiling data sample. |
fieldIndex | The index of the profiling data sample field. |
Implements kanzi::AbstractProfiler.