aboutsummaryrefslogtreecommitdiffstats
path: root/src/qmlcompiler/qqmljscompilerstatsreporter_p.h
blob: a5575f6a0fae272ba4c43c185593891568fc0a69 (plain)
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
// Copyright (C) 2024 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0

#ifndef QQMLJSCOMPILERSTATSREPORTER_P_H
#define QQMLJSCOMPILERSTATSREPORTER_P_H

//
//  W A R N I N G
//  -------------
//
// This file is not part of the Qt API.  It exists purely as an
// implementation detail.  This header file may change from version to
// version without notice, or even be removed.
//
// We mean it.

#include <QTextStream>

#include <qtqmlcompilerexports.h>

#include <private/qqmljscompilerstats_p.h>

QT_BEGIN_NAMESPACE

namespace QQmlJS {

class Q_QMLCOMPILER_EXPORT AotStatsReporter
{
public:
    AotStatsReporter(const QQmlJS::AotStats &stats, const QStringList &emptyModules,
                     const QStringList &onlyBytecodeModules);

    QString format() const;

private:
    void formatDetailedStats(QTextStream &) const;
    void formatSummary(QTextStream &) const;
    QString formatSuccessRate(int codegens, int successes, int skips) const;

    const AotStats &m_aotstats;
    const QStringList &m_emptyModules;
    const QStringList &m_onlyBytecodeModules;

    struct Counters
    {
        int successes = 0;
        int skips = 0;
        int codegens = 0;
    };

    Counters m_totalCounters;
    QHash<QString, Counters> m_moduleCounters;
    QHash<QString, QHash<QString, Counters>> m_fileCounters;
    QList<std::chrono::microseconds> m_successDurations;
};

} // namespace QQmlJS

QT_END_NAMESPACE

#endif // QQMLJSCOMPILERSTATSREPORTER_P_H