blob: 199bef8595c3a68585f29f3994c9568787aeb414 (
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
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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
|
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
#include <QTest>
#include <QVariantMap>
#include <qjsondocument.h>
#include <qjsonobject.h>
class BenchmarkQtJson: public QObject
{
Q_OBJECT
public:
BenchmarkQtJson(QObject *parent = nullptr);
private Q_SLOTS:
void initTestCase();
void cleanupTestCase();
void init();
void cleanup();
void parseNumbers();
void parseJson();
void parseJsonToVariant();
void jsonObjectInsert();
void variantMapInsert();
};
BenchmarkQtJson::BenchmarkQtJson(QObject *parent) : QObject(parent)
{
}
void BenchmarkQtJson::initTestCase()
{
}
void BenchmarkQtJson::cleanupTestCase()
{
}
void BenchmarkQtJson::init()
{
}
void BenchmarkQtJson::cleanup()
{
}
void BenchmarkQtJson::parseNumbers()
{
QString testFile = QFINDTESTDATA("numbers.json");
QVERIFY2(!testFile.isEmpty(), "cannot find test file numbers.json!");
QFile file(testFile);
file.open(QFile::ReadOnly);
QByteArray testJson = file.readAll();
QBENCHMARK {
QJsonDocument doc = QJsonDocument::fromJson(testJson);
QJsonObject object = doc.object();
}
}
void BenchmarkQtJson::parseJson()
{
QString testFile = QFINDTESTDATA("test.json");
QVERIFY2(!testFile.isEmpty(), "cannot find test file test.json!");
QFile file(testFile);
file.open(QFile::ReadOnly);
QByteArray testJson = file.readAll();
QBENCHMARK {
QJsonDocument doc = QJsonDocument::fromJson(testJson);
QJsonObject object = doc.object();
}
}
void BenchmarkQtJson::parseJsonToVariant()
{
QString testFile = QFINDTESTDATA("test.json");
QVERIFY2(!testFile.isEmpty(), "cannot find test file test.json!");
QFile file(testFile);
file.open(QFile::ReadOnly);
QByteArray testJson = file.readAll();
QBENCHMARK {
QJsonDocument doc = QJsonDocument::fromJson(testJson);
QVariant v = doc.toVariant();
}
}
void BenchmarkQtJson::jsonObjectInsert()
{
QJsonObject object;
QString test(QStringLiteral("testString"));
QJsonValue value(1.5);
QBENCHMARK {
for (int i = 0; i < 1000; i++)
object.insert("testkey_" + QString::number(i), value);
}
}
void BenchmarkQtJson::variantMapInsert()
{
QVariantMap object;
QString test(QStringLiteral("testString"));
QVariant variantValue(1.5);
QBENCHMARK {
for (int i = 0; i < 1000; i++)
object.insert("testkey_" + QString::number(i), variantValue);
}
}
QTEST_MAIN(BenchmarkQtJson)
#include "tst_bench_qtjson.moc"
|