diff options
author | Lars Knoll <lars.knoll@nokia.com> | 2012-03-20 20:45:27 +0100 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-03-22 18:59:45 +0100 |
commit | 349c0de0912884388f2490d4bfd6905424ccf194 (patch) | |
tree | a939e29f8ab31b2a90a0d2d9b67094f0375c901b /tests/benchmarks | |
parent | 8dd18751e18ef9509729cbaca6ca5e6810729e2c (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')
-rw-r--r-- | tests/benchmarks/corelib/json/tst_bench_qtbinaryjson.cpp | 28 |
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" |