File: DebugTimeManager.h

package info (click to toggle)
deepin-log-viewer 6.5.8%2Bds1-1
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 14,752 kB
  • sloc: cpp: 61,723; ansic: 1,732; xml: 81; sh: 59; makefile: 12
file content (92 lines) | stat: -rw-r--r-- 2,499 bytes parent folder | download | duplicates (2)
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
// SPDX-FileCopyrightText: 2019 - 2022 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: GPL-3.0-or-later

#ifndef DEBUGTIMEMANAGER_H
#define DEBUGTIMEMANAGER_H

#include <QObject>
#include <QMap>
#include <QString>
#include "config.h"
#define PERF_ON
#ifdef PERF_ON
#define PERF_PRINT_BEGIN(point, dsec) DebugTimeManager::getInstance()->beginPointLinux(point,dsec)
#define PERF_PRINT_END(point, dsec) DebugTimeManager::getInstance()->endPointLinux(point, dsec)
#else
#define PERF_PRINT_BEGIN(point, dsec)
#define PERF_PRINT_END(point, dsec)
#endif
/**
 * @brief The PointInfo struct
 */
struct PointInfo {
    QString desc;
    qint64  time;
};
struct PointInfoLinux {
    QString desc;
    timespec  time;
};

class DebugTimeManager
{
public:
    /**
     * @brief getInstance : get signal instance
     * @return : the signal instance
     */
    static DebugTimeManager *getInstance()
    {
        static DebugTimeManager m_manager;
        return  &m_manager;
    }

    /**
     * @brief clear : clear data
     */
    void clear();

    /**
     * @brief beginPointQt : 打点开始,Qt
     * @param point : 所打的点的名称,固定格式,在打点文档中查看 -- POINT-XX POINT-01
     * @param status : 性能测试的状态,比如测试时文件的大小
     */
    //    void beginPointQt(const QString &point, const QString &status = "");

    /**
     * @brief endPointQt : 结束打点,Qt
     * @param point : 需要结束的点
     */
    //    void endPointQt(const QString &point);

    /**
     * @brief beginPointLinux : 打点开始,Linux
     * @param point : 所打的点的名称,固定格式,在打点文档中查看 -- POINT-XX POINT-01
     * @param status : 性能测试的状态,比如测试时文件的大小
     */
    void beginPointLinux(const QString &point, const QString &status = "");

    /**
     * @brief endPointLinux : 结束打点,Linux
     * @param point : 需要结束的点
     */
    void endPointLinux(const QString &point, const QString &status = "");
    /**
     * @brief diff 计算两个timespec结构体时间之差
     * @param start 开始时间
     * @param end 结束时间
     * @return  时间差
     */
    timespec diff(timespec start, timespec end);
protected:
    DebugTimeManager();


private:
    QMap<QString, PointInfo>    m_MapPoint;      //<! 保存所打的点
    QMap<QString, PointInfoLinux>    m_MapLinuxPoint;      //<! 保存所打的点

};

#endif // DEBUGTIMEMANAGER_H