Added extra tests to json benchmark
authorKurt Korbatits <kurt.korbatits@nokia.com>
Mon, 19 Mar 2012 04:54:16 +0000 (14:54 +1000)
committerQt by Nokia <qt-info@nokia.com>
Wed, 21 Mar 2012 23:00:28 +0000 (00:00 +0100)
- Added toByteArray() and fromByteArray() benchmark tests.
  Performance tests to measure QVariantMap to bytearray
  and bytearray to QVariantMap.
  Use case: Interprocess communications via local socket

Change-Id: If5e94ff870890b2ebb665f3cc38f5c33b34547f4
Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
tests/benchmarks/corelib/json/tst_bench_qtbinaryjson.cpp

index 2253d00..e4e10ba 100644 (file)
@@ -58,6 +58,8 @@ private Q_SLOTS:
     void parseNumbers();
     void parseJson();
     void parseJsonToVariant();
+    void toByteArray();
+    void fromByteArray();
 };
 
 BenchmarkQtBinaryJson::BenchmarkQtBinaryJson(QObject *parent) : QObject(parent)
@@ -127,6 +129,36 @@ void BenchmarkQtBinaryJson::parseJsonToVariant()
     }
 }
 
+void BenchmarkQtBinaryJson::toByteArray()
+{
+    // Example: send information over a datastream to another process
+    // Measure performance of creating and processing data into bytearray
+    QBENCHMARK {
+        QVariantMap message;
+        message.insert("command", 1);
+        message.insert("key", "some information");
+        message.insert("env", "some environment variables");
+        QByteArray msg = QJsonDocument(QJsonObject::fromVariantMap(message)).toBinaryData();
+    }
+}
+
+void BenchmarkQtBinaryJson::fromByteArray()
+{
+    // Example: receive information over a datastream from another process
+    // Measure performance of converting content back to QVariantMap
+    // We need to recreate the bytearray but here we only want to measure the latter
+    QVariantMap message;
+    message.insert("command", 1);
+    message.insert("key", "some information");
+    message.insert("env", "some environment variables");
+    QByteArray msg = QJsonDocument(QJsonObject::fromVariantMap(message)).toBinaryData();
+
+    QBENCHMARK {
+        QVariantMap message;
+        message = QJsonDocument::fromBinaryData(msg, QJsonDocument::Validate).object().toVariantMap();
+    }
+}
+
 QTEST_MAIN(BenchmarkQtBinaryJson)
 #include "tst_bench_qtbinaryjson.moc"