Krita Source Code Documentation
Loading...
Searching...
No Matches
KisScalarTracker< T > Class Template Reference

#include <kis_latency_tracker.h>

+ Inheritance diagram for KisScalarTracker< T >:

Public Member Functions

 KisScalarTracker (const QString &name, int windowSize=500)
 
virtual void push (T value)
 
virtual ~KisScalarTracker ()
 
- Public Member Functions inherited from KisShared
bool deref ()
 
bool ref ()
 
int refCount ()
 
QAtomicInt * sharedWeakReference ()
 

Protected Member Functions

virtual QString format (qint64 mean, qint64 variance, qint64 max)
 
virtual void print (const QString &message)
 
- Protected Member Functions inherited from KisShared
 KisShared ()
 
 ~KisShared ()
 

Private Types

typedef boost::accumulators::stats< boost::accumulators::tag::lazy_rolling_mean, boost::accumulators::tag::rolling_variance > stats
 

Private Attributes

boost::accumulators::accumulator_set< T, statsm_acc
 
int m_addCount
 
KisRollingMax< T > m_max
 
const QString m_name
 
QElapsedTimer m_printTimer
 
const int m_windowSize
 

Detailed Description

template<typename T>
class KisScalarTracker< T >

Definition at line 56 of file kis_latency_tracker.h.

Member Typedef Documentation

◆ stats

template<typename T >
typedef boost::accumulators::stats< boost::accumulators::tag::lazy_rolling_mean, boost::accumulators::tag::rolling_variance> KisScalarTracker< T >::stats
private

Definition at line 127 of file kis_latency_tracker.h.

Constructor & Destructor Documentation

◆ KisScalarTracker()

template<typename T >
KisScalarTracker< T >::KisScalarTracker ( const QString & name,
int windowSize = 500 )
inline

Create a tracker with the given window size.

Parameters
windowThe maximum number of elements to take into account for calculation of max, mean and variance values.

Definition at line 63 of file kis_latency_tracker.h.

63 :
64 m_name(name),
65 m_windowSize(windowSize),
66 m_addCount(0),
67 m_max(windowSize),
68 m_acc(boost::accumulators::tag::rolling_window::window_size = windowSize)
69 {
70 m_printTimer.start();
71 }
KisRollingMax< T > m_max
boost::accumulators::accumulator_set< T, stats > m_acc
QElapsedTimer m_printTimer

References KisScalarTracker< T >::m_printTimer.

◆ ~KisScalarTracker()

template<typename T >
virtual KisScalarTracker< T >::~KisScalarTracker ( )
inlinevirtual

Definition at line 73 of file kis_latency_tracker.h.

73 {
74 }

Member Function Documentation

◆ format()

template<typename T >
virtual QString KisScalarTracker< T >::format ( qint64 mean,
qint64 variance,
qint64 max )
inlineprotectedvirtual

Formats a message for printing.

Parameters
meanthe mean scalar in the window
variancethe variance of the scalar in the window
maxthe max scalar in the window

Definition at line 111 of file kis_latency_tracker.h.

111 {
112 return QString("%1: mean %2 ms, var %3, max %4 ms").arg(m_name).arg(mean).arg(variance).arg(max);
113 }

References KisScalarTracker< T >::m_name.

◆ print()

template<typename T >
virtual void KisScalarTracker< T >::print ( const QString & message)
inlineprotectedvirtual

Print out a message.

Parameters
messagethe message to print

Reimplemented in KisInputManager::Private::TabletLatencyTracker.

Definition at line 101 of file kis_latency_tracker.h.

101 {
102 qInfo() << qUtf8Printable(message);
103 }

◆ push()

template<typename T >
virtual void KisScalarTracker< T >::push ( T value)
inlinevirtual

Add a scalar.

Parameters
valuethe scalar to be added.

Reimplemented in KisLatencyTracker.

Definition at line 80 of file kis_latency_tracker.h.

80 {
81 m_max.push(value);
82 m_acc(value);
83 m_addCount++;
84
85 if (m_addCount >= m_windowSize || m_printTimer.elapsed() >= 1000) {
86 m_printTimer.restart();
87 QString s = format(boost::accumulators::rolling_mean(m_acc),
88 boost::accumulators::rolling_variance(m_acc),
89 m_max.max());
90 print(s);
91 m_addCount = 0;
92 }
93
94 }
float value(const T *src, size_t ch)
virtual void print(const QString &message)
virtual QString format(qint64 mean, qint64 variance, qint64 max)

References KisScalarTracker< T >::format(), KisScalarTracker< T >::m_acc, KisScalarTracker< T >::m_addCount, KisScalarTracker< T >::m_max, KisScalarTracker< T >::m_printTimer, KisScalarTracker< T >::m_windowSize, KisScalarTracker< T >::print(), and value().

Member Data Documentation

◆ m_acc

template<typename T >
boost::accumulators::accumulator_set<T, stats> KisScalarTracker< T >::m_acc
private

Definition at line 129 of file kis_latency_tracker.h.

◆ m_addCount

template<typename T >
int KisScalarTracker< T >::m_addCount
private

Definition at line 118 of file kis_latency_tracker.h.

◆ m_max

template<typename T >
KisRollingMax<T> KisScalarTracker< T >::m_max
private

Definition at line 122 of file kis_latency_tracker.h.

◆ m_name

template<typename T >
const QString KisScalarTracker< T >::m_name
private

Definition at line 116 of file kis_latency_tracker.h.

◆ m_printTimer

template<typename T >
QElapsedTimer KisScalarTracker< T >::m_printTimer
private

Definition at line 120 of file kis_latency_tracker.h.

◆ m_windowSize

template<typename T >
const int KisScalarTracker< T >::m_windowSize
private

Definition at line 117 of file kis_latency_tracker.h.


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