The interval profiler. More...
#include <kanzi/core/profiling/interval_profiler.hpp>
Public Types | |
typedef AbstractValueProfiler< IntervalProfilerSampleData, IntervalProfilerSampleStatistics > | BaseValueProfiler |
The typedef of the base value profiler class. More... | |
Public Types inherited from kanzi::AbstractValueProfiler< IntervalProfilerSampleData, IntervalProfilerSampleStatistics > | |
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 } |
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 (IntervalProfilerSampleData sample) |
Adds a new profiling data sample to the profiler. More... | |
const IntervalProfilerSampleData & | getSample (size_t index) const |
Accesses a profiling data sample stored in the sample buffer. More... | |
const IntervalProfilerSampleStatistics & | getProfilingStatistics () const |
Gets a reference to interval profiling statistics. More... | |
Public Member Functions inherited from kanzi::AbstractValueProfiler< IntervalProfilerSampleData, IntervalProfilerSampleStatistics > | |
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 | |
virtual | ~AbstractProfiler () |
Destructor. More... | |
string_view | getName () const |
Gets the name of the profiler. More... | |
const ProfilingCategory & | getCategory () const |
Gets a reference to the profiling category assigned to the profiler. More... | |
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... | |
size_t | getSampleFieldCount () const |
Gets the number of sample data fields. More... | |
string | getSampleFieldName (size_t fieldIndex) const |
Gets the name of a data sample field. More... | |
size_t | getSampleCount () const |
Gets the number of collected profiling data samples. 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... | |
Static Public Member Functions | |
static IntervalProfilerSharedPtr | create (string_view name, const ProfilingCategory &category, size_t sampleBufferSize) |
Creates a new interval 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 | |
IntervalProfiler (string_view name, const ProfilingCategory &category, size_t sampleBufferSize) | |
Constructor. More... | |
IntervalProfiler (const IntervalProfiler &rhs) KZ_DELETED_FUNCTION | |
Deleted copy constructor, preventing copying of the object. More... | |
IntervalProfiler & | operator= (const IntervalProfiler &rhs) KZ_DELETED_FUNCTION |
Deleted assignment operator, preventing assignment of the object. More... | |
virtual size_t | getAggregateDataFieldCountOverride () const KZ_OVERRIDE |
The override of AbstractProfiler::getAggregateDataFieldCountOverride(). More... | |
virtual string | getAggregateDataFieldNameOverride (size_t fieldIndex) const KZ_OVERRIDE |
The override of AbstractProfiler::getAggregateDataFieldNameOverride(). More... | |
virtual size_t | getSampleFieldCountOverride () const KZ_OVERRIDE |
The override of AbstractProfiler::getSampleFieldCountOverride(). More... | |
virtual string | getSampleFieldNameOverride (size_t fieldIndex) const KZ_OVERRIDE |
The override of AbstractProfiler::getSampleFieldNameOverride(). More... | |
virtual Value | getAggregateDataFieldValueOverride (size_t fieldIndex) const KZ_OVERRIDE |
The override of AbstractProfilerRegistry::getAggregateDataFieldValueOverride(). More... | |
virtual Value | getSampleFieldValueOverride (size_t sampleIndex, size_t fieldIndex) const KZ_OVERRIDE |
The override of AbstractProfilerRegistry::getSampleFieldValueOverride(). More... | |
Protected Member Functions inherited from kanzi::AbstractValueProfiler< IntervalProfilerSampleData, IntervalProfilerSampleStatistics > | |
AbstractValueProfiler (string_view name, const ProfilingCategory &category, size_t sampleBufferSize) | |
Constructor. More... | |
const IntervalProfilerSampleData & | getSample (size_t index) const |
Accesses a profiling data sample stored in the sample buffer. More... | |
void | checkBufferFull () |
Performs all buffer full callbacks and clears samples if buffer is full. More... | |
void | addSample (const IntervalProfilerSampleData &sample) |
Adds a new profiling data sample. More... | |
void | addSample (KZ_RV_REF(IntervalProfilerSampleData) sample) |
Adds a new movable profiling data sample to the profiler. More... | |
virtual size_t | getSampleCountOverride () const KZ_OVERRIDE |
Override of #AbstractProfiler::getSampleCountOverride(). 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 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().
typedef AbstractValueProfiler<IntervalProfilerSampleData, IntervalProfilerSampleStatistics> kanzi::IntervalProfiler::BaseValueProfiler |
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. |
|
explicitprotected |
Deleted copy constructor, preventing copying of the object.
|
static |
Creates a new interval 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::IntervalProfiler::addSample | ( | IntervalProfilerSampleData | 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.
|
protected |
Deleted assignment operator, preventing assignment of the object.
|
protectedvirtual |
The override of AbstractProfiler::getAggregateDataFieldCountOverride().
Implements kanzi::AbstractProfiler.
|
protectedvirtual |
The override of AbstractProfiler::getAggregateDataFieldNameOverride().
fieldIndex | The index of the field. |
Implements kanzi::AbstractProfiler.
|
protectedvirtual |
The override of AbstractProfiler::getSampleFieldCountOverride().
Implements kanzi::AbstractProfiler.
|
protectedvirtual |
The override of AbstractProfiler::getSampleFieldNameOverride().
fieldIndex | The index of the sample field. |
Implements kanzi::AbstractProfiler.
|
protectedvirtual |
The override of AbstractProfilerRegistry::getAggregateDataFieldValueOverride().
fieldIndex | The index of the aggregate profiling data field. |
Implements kanzi::AbstractProfiler.
|
protectedvirtual |
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.