summaryrefslogtreecommitdiffstats
path: root/tests/benchmarks/corelib/tools
diff options
context:
space:
mode:
Diffstat (limited to 'tests/benchmarks/corelib/tools')
-rw-r--r--tests/benchmarks/corelib/tools/qhash/main.cpp7
-rw-r--r--tests/benchmarks/corelib/tools/qhash/main.h11
-rw-r--r--tests/benchmarks/corelib/tools/qhash/outofline.cpp18
3 files changed, 32 insertions, 4 deletions
diff --git a/tests/benchmarks/corelib/tools/qhash/main.cpp b/tests/benchmarks/corelib/tools/qhash/main.cpp
index 7a871b455c..62384fbaa7 100644
--- a/tests/benchmarks/corelib/tools/qhash/main.cpp
+++ b/tests/benchmarks/corelib/tools/qhash/main.cpp
@@ -138,8 +138,11 @@ void tst_QHash::data()
void tst_QHash::qhash_qt4()
{
QFETCH(QStringList, items);
- QStringList realitems = items; // for copy/paste ease between benchmarks
- QHash<QString, int> hash;
+ QHash<Qt4String, int> hash;
+
+ QList<Qt4String> realitems;
+ foreach (const QString &s, items)
+ realitems.append(s);
QBENCHMARK {
for (int i = 0, n = realitems.size(); i != n; ++i) {
diff --git a/tests/benchmarks/corelib/tools/qhash/main.h b/tests/benchmarks/corelib/tools/qhash/main.h
index c4cf94e190..3d193b5e40 100644
--- a/tests/benchmarks/corelib/tools/qhash/main.h
+++ b/tests/benchmarks/corelib/tools/qhash/main.h
@@ -41,6 +41,17 @@
#include <QString>
+struct Qt4String : QString
+{
+ Qt4String() {}
+ Qt4String(const QString &s) : QString(s) {}
+};
+
+QT_BEGIN_NAMESPACE
+uint qHash(const Qt4String &);
+QT_END_NAMESPACE
+
+
struct String : QString
{
String() {}
diff --git a/tests/benchmarks/corelib/tools/qhash/outofline.cpp b/tests/benchmarks/corelib/tools/qhash/outofline.cpp
index 162c604a35..8adaa0a04f 100644
--- a/tests/benchmarks/corelib/tools/qhash/outofline.cpp
+++ b/tests/benchmarks/corelib/tools/qhash/outofline.cpp
@@ -41,6 +41,22 @@
#include "main.h"
+QT_BEGIN_NAMESPACE
+
+uint qHash(const Qt4String &str)
+{
+ int n = str.length();
+ const QChar *p = str.unicode();
+ uint h = 0;
+
+ while (n--) {
+ h = (h << 4) + (*p++).unicode();
+ h ^= (h & 0xf0000000) >> 23;
+ h &= 0x0fffffff;
+ }
+ return h;
+}
+
static void doHash(const unsigned short *p, uint &h)
{
#if 1
@@ -67,8 +83,6 @@ static void doHash(const unsigned short *p, uint &h)
#endif
}
-QT_BEGIN_NAMESPACE
-
uint qHash(const String &str)
{
const unsigned short *p = (unsigned short *)str.constData();