summaryrefslogtreecommitdiffstats
path: root/tests/benchmarks/corelib/tools/qhash
diff options
context:
space:
mode:
authorRobin Burchell <robin.burchell@collabora.com>2012-01-20 01:54:43 +0200
committerQt by Nokia <qt-info@nokia.com>2012-01-24 01:09:05 +0100
commit1806ea8dd9c5849ea70389d5c3baf66137242d8e (patch)
treea2027b5bb7467c1770c158f28f4a2e4ba643bf2d /tests/benchmarks/corelib/tools/qhash
parent47d0813f5b3b7df56a3ac4b32c460d82b425c664 (diff)
Add the capability to use multiple data sources for qhash benchmark.
More data sources to be added in followup commits. Change-Id: I0393119b36ac5d88fc2c5c8d46b000d13d5ca996 Reviewed-by: Richard J. Moore <rich@kde.org>
Diffstat (limited to 'tests/benchmarks/corelib/tools/qhash')
-rw-r--r--tests/benchmarks/corelib/tools/qhash/main.cpp51
-rw-r--r--tests/benchmarks/corelib/tools/qhash/paths_small_data.txt (renamed from tests/benchmarks/corelib/tools/qhash/data.txt)0
2 files changed, 31 insertions, 20 deletions
diff --git a/tests/benchmarks/corelib/tools/qhash/main.cpp b/tests/benchmarks/corelib/tools/qhash/main.cpp
index 412f071a99..f9aec58485 100644
--- a/tests/benchmarks/corelib/tools/qhash/main.cpp
+++ b/tests/benchmarks/corelib/tools/qhash/main.cpp
@@ -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;
}
}
}
diff --git a/tests/benchmarks/corelib/tools/qhash/data.txt b/tests/benchmarks/corelib/tools/qhash/paths_small_data.txt
index d5acd28820..d5acd28820 100644
--- a/tests/benchmarks/corelib/tools/qhash/data.txt
+++ b/tests/benchmarks/corelib/tools/qhash/paths_small_data.txt