summaryrefslogtreecommitdiffstats
path: root/tests/benchmarks/corelib
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@nokia.com>2012-03-20 20:45:27 +0100
committerQt by Nokia <qt-info@nokia.com>2012-03-22 18:59:45 +0100
commit349c0de0912884388f2490d4bfd6905424ccf194 (patch)
treea939e29f8ab31b2a90a0d2d9b67094f0375c901b /tests/benchmarks/corelib
parent8dd18751e18ef9509729cbaca6ca5e6810729e2c (diff)
Significantly speed up insertion into QJsonObject/Array
The code was only allocating memory for the next insertion leading to a reallocation of the whole data for every single insertion. The code now reserves some space and uses a decent growth strategy to avoid repeated reallocs. Change-Id: I48b0feab71ba8ca73e7037f8460080f198b2f009 Reviewed-by: Jamey Hicks <jamey.hicks@nokia.com>
Diffstat (limited to 'tests/benchmarks/corelib')
-rw-r--r--tests/benchmarks/corelib/json/tst_bench_qtbinaryjson.cpp28
1 files changed, 28 insertions, 0 deletions
diff --git a/tests/benchmarks/corelib/json/tst_bench_qtbinaryjson.cpp b/tests/benchmarks/corelib/json/tst_bench_qtbinaryjson.cpp
index e4e10ba2ba..c6956b4747 100644
--- a/tests/benchmarks/corelib/json/tst_bench_qtbinaryjson.cpp
+++ b/tests/benchmarks/corelib/json/tst_bench_qtbinaryjson.cpp
@@ -58,8 +58,12 @@ private Q_SLOTS:
void parseNumbers();
void parseJson();
void parseJsonToVariant();
+
void toByteArray();
void fromByteArray();
+
+ void jsonObjectInsert();
+ void variantMapInsert();
};
BenchmarkQtBinaryJson::BenchmarkQtBinaryJson(QObject *parent) : QObject(parent)
@@ -159,6 +163,30 @@ void BenchmarkQtBinaryJson::fromByteArray()
}
}
+void BenchmarkQtBinaryJson::jsonObjectInsert()
+{
+ QJsonObject object;
+ QString test(QStringLiteral("testString"));
+ QJsonValue value(1.5);
+
+ QBENCHMARK {
+ for (int i = 0; i < 1000; i++)
+ object.insert("testkey_" + i, value);
+ }
+}
+
+void BenchmarkQtBinaryJson::variantMapInsert()
+{
+ QVariantMap object;
+ QString test(QStringLiteral("testString"));
+ QVariant variantValue(1.5);
+
+ QBENCHMARK {
+ for (int i = 0; i < 1000; i++)
+ object.insert("testkey_" + i, variantValue);
+ }
+}
+
QTEST_MAIN(BenchmarkQtBinaryJson)
#include "tst_bench_qtbinaryjson.moc"