/
qgsruntimeprofiler.h
76 lines (62 loc) · 1.82 KB
/
qgsruntimeprofiler.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#ifndef QGSRUNTIMEPROFILER_H
#define QGSRUNTIMEPROFILER_H
#include <QTime>
#include <QPair>
#include <QStack>
class CORE_EXPORT QgsRuntimeProfiler
{
public:
/**
* Constructor to create a new runtime profiler.
*/
QgsRuntimeProfiler();
/**
* @brief Instance of the run time profiler. To use the main profiler
* use this instance.
* @return The instance of the run time profiler
*/
static QgsRuntimeProfiler * instance();
/**
* @brief Begin the group for the profiler. Groups will append {GroupName}/ to the
* front of the profile tag set using start.
* @param name The name of the group.
*/
void beginGroup( const QString& name );
/**
* @brief End the current active group.
*/
void endGroup();
/**
* @brief Start a profile event with the given name.
* @param name The name of the profile event. Will have the name of
* the active group appened after ending.
*/
void start( const QString& name );
/**
* @brief End the current profile event.
*/
void end();
/**
* @brief Return all the current profile times.
* @return A list of profile event names and times.
* @note not available in python bindings
*/
const QList<QPair<QString, double > > profileTimes() const { return mProfileTimes; }
/**
* @brief clear Clear all profile data.
*/
void clear();
/**
* @brief The current total time collected in the profiler.
* @return The current total time collected in the profiler.
*/
double totalTime();
private:
static QgsRuntimeProfiler* mInstance;
QString mGroupPrefix;
QStack<QString> mGroupStack;
QTime mProfileTime;
QString mCurrentName;
QList<QPair<QString, double > > mProfileTimes;
};
#endif // QGSRUNTIMEPROFILER_H