diff options
Diffstat (limited to 'tests/benchmarks/corelib/tools')
-rw-r--r-- | tests/benchmarks/corelib/tools/qhash/outofline.cpp | 13 | ||||
-rw-r--r-- | tests/benchmarks/corelib/tools/qhash/qhash_string.cpp | 16 | ||||
-rw-r--r-- | tests/benchmarks/corelib/tools/qhash/qhash_string.h | 12 |
3 files changed, 41 insertions, 0 deletions
diff --git a/tests/benchmarks/corelib/tools/qhash/outofline.cpp b/tests/benchmarks/corelib/tools/qhash/outofline.cpp index 11a5f9e733..86e92e1630 100644 --- a/tests/benchmarks/corelib/tools/qhash/outofline.cpp +++ b/tests/benchmarks/corelib/tools/qhash/outofline.cpp @@ -87,4 +87,17 @@ uint qHash(const String &str) return h; } +uint qHash(const JavaString &str) +{ + const unsigned short *p = (unsigned short *)str.constData(); + const int len = str.size(); + + uint h = 0; + + for (int i = 0; i < len; ++i) + h = 31 * h + p[i]; + + return h; +} + QT_END_NAMESPACE diff --git a/tests/benchmarks/corelib/tools/qhash/qhash_string.cpp b/tests/benchmarks/corelib/tools/qhash/qhash_string.cpp index 874a0c543a..4ed5a78a32 100644 --- a/tests/benchmarks/corelib/tools/qhash/qhash_string.cpp +++ b/tests/benchmarks/corelib/tools/qhash/qhash_string.cpp @@ -83,6 +83,7 @@ class tst_QHash : public QObject private slots: void qhash_qt4(); void qhash_faster(); + void javaString(); private: QString data(); @@ -126,6 +127,21 @@ void tst_QHash::qhash_faster() } } +void tst_QHash::javaString() +{ + QList<JavaString> items; + foreach (const QString &s, data().split(QLatin1Char('\n'))) + items.append(s); + QHash<JavaString, int> hash; + + QBENCHMARK { + for (int i = 0, n = items.size(); i != n; ++i) { + hash[items.at(i)] = i; + } + } +} + + QTEST_MAIN(tst_QHash) #include "qhash_string.moc" diff --git a/tests/benchmarks/corelib/tools/qhash/qhash_string.h b/tests/benchmarks/corelib/tools/qhash/qhash_string.h index 94f142914b..3b2237e0b9 100644 --- a/tests/benchmarks/corelib/tools/qhash/qhash_string.h +++ b/tests/benchmarks/corelib/tools/qhash/qhash_string.h @@ -50,3 +50,15 @@ struct String : QString QT_BEGIN_NAMESPACE uint qHash(const String &); QT_END_NAMESPACE + + +struct JavaString : QString +{ + JavaString() {} + JavaString(const QString &s) : QString(s) {} +}; + +QT_BEGIN_NAMESPACE +uint qHash(const JavaString &); +QT_END_NAMESPACE + |