Add the capability to use multiple data sources for qhash benchmark.
authorRobin Burchell <robin.burchell@collabora.com>
Thu, 19 Jan 2012 23:54:43 +0000 (01:54 +0200)
committerQt by Nokia <qt-info@nokia.com>
Tue, 24 Jan 2012 00:09:05 +0000 (01:09 +0100)
More data sources to be added in followup commits.

Change-Id: I0393119b36ac5d88fc2c5c8d46b000d13d5ca996
Reviewed-by: Richard J. Moore <rich@kde.org>
tests/benchmarks/corelib/tools/qhash/main.cpp
tests/benchmarks/corelib/tools/qhash/paths_small_data.txt [moved from tests/benchmarks/corelib/tools/qhash/data.txt with 100% similarity]

index 412f071..f9aec58 100644 (file)
@@ -54,12 +54,15 @@ class tst_QHash : public QObject
     Q_OBJECT
 
 private slots:
+    void qhash_qt4_data() { data(); }
     void qhash_qt4();
+    void qhash_faster_data() { data(); }
     void qhash_faster();
+    void javaString_data() { data(); }
     void javaString();
 
 private:
-    QString data();
+    void data();
 };
 
 const int N = 1000000;
@@ -67,49 +70,57 @@ extern double s;
 
 ///////////////////// QHash /////////////////////
 
-QString tst_QHash::data()
+void tst_QHash::data()
 {
-    QFile file("data.txt");
-    file.open(QIODevice::ReadOnly);
-    return QString::fromLatin1(file.readAll());
+    QFile smallPathsData("paths_small_data.txt");
+    smallPathsData.open(QIODevice::ReadOnly);
+
+    QTest::addColumn<QStringList>("items");
+    QTest::newRow("paths-small")
+            << QString::fromLatin1(smallPathsData.readAll()).split(QLatin1Char('\n'));
 }
 
 void tst_QHash::qhash_qt4()
 {
-    QStringList items = data().split(QLatin1Char('\n'));
+    QFETCH(QStringList, items);
+    QStringList realitems = items; // for copy/paste ease between benchmarks
     QHash<QString, int> hash;
-    
+
     QBENCHMARK {
-        for (int i = 0, n = items.size(); i != n; ++i) {
-            hash[items.at(i)] = i;
+        for (int i = 0, n = realitems.size(); i != n; ++i) {
+            hash[realitems.at(i)] = i;
         }
     }
 }
 
 void tst_QHash::qhash_faster()
 {
-    QList<String> items;
-    foreach (const QString &s, data().split(QLatin1Char('\n')))
-        items.append(s);
+    QFETCH(QStringList, items);
     QHash<String, int> hash;
-    
+
+    QList<String> realitems;
+    foreach (const QString &s, items)
+        realitems.append(s);
+
     QBENCHMARK {
-        for (int i = 0, n = items.size(); i != n; ++i) {
-            hash[items.at(i)] = i;
+        for (int i = 0, n = realitems.size(); i != n; ++i) {
+            hash[realitems.at(i)] = i;
         }
     }
 }
 
 void tst_QHash::javaString()
 {
-    QList<JavaString> items;
-    foreach (const QString &s, data().split(QLatin1Char('\n')))
-        items.append(s);
+    QFETCH(QStringList, items);
     QHash<JavaString, int> hash;
 
+    QList<JavaString> realitems;
+    foreach (const QString &s, items)
+        realitems.append(s);
+
     QBENCHMARK {
-        for (int i = 0, n = items.size(); i != n; ++i) {
-            hash[items.at(i)] = i;
+        for (int i = 0, n = realitems.size(); i != n; ++i) {
+            hash[realitems.at(i)] = i;
         }
     }
 }