Remove qhash_faster.
authorRobin Burchell <robin+qt@viroteck.net>
Tue, 28 Feb 2012 20:04:53 +0000 (21:04 +0100)
committerQt by Nokia <qt-info@nokia.com>
Wed, 29 Feb 2012 21:39:00 +0000 (22:39 +0100)
It's not faster under _any_ metric than the new algorithm, and it loses a lot of
spread which is a bad thing.

Change-Id: Ic87258f1c887822ffea1cb1517355564fabc3c26
Reviewed-by: João Abecasis <joao.abecasis@nokia.com>
tests/benchmarks/corelib/tools/qhash/main.cpp
tests/benchmarks/corelib/tools/qhash/main.h
tests/benchmarks/corelib/tools/qhash/outofline.cpp

index 62384fb..67396ff 100644 (file)
@@ -57,8 +57,6 @@ private slots:
     void initTestCase();
     void qhash_qt4_data() { data(); }
     void qhash_qt4();
-    void qhash_faster_data() { data(); }
-    void qhash_faster();
     void javaString_data() { data(); }
     void javaString();
 
@@ -151,22 +149,6 @@ void tst_QHash::qhash_qt4()
     }
 }
 
-void tst_QHash::qhash_faster()
-{
-    QFETCH(QStringList, items);
-    QHash<String, int> hash;
-
-    QList<String> realitems;
-    foreach (const QString &s, items)
-        realitems.append(s);
-
-    QBENCHMARK {
-        for (int i = 0, n = realitems.size(); i != n; ++i) {
-            hash[realitems.at(i)] = i;
-        }
-    }
-}
-
 void tst_QHash::javaString()
 {
     QFETCH(QStringList, items);
index 3d193b5..a865eaf 100644 (file)
@@ -52,17 +52,6 @@ uint qHash(const Qt4String &);
 QT_END_NAMESPACE
 
 
-struct String : QString
-{
-    String() {}
-    String(const QString &s) : QString(s) {}
-};
-
-QT_BEGIN_NAMESPACE
-uint qHash(const String &);
-QT_END_NAMESPACE
-
-
 struct JavaString : QString
 {
     JavaString() {}
index 8adaa0a..75d99f9 100644 (file)
@@ -57,50 +57,6 @@ uint qHash(const Qt4String &str)
     return h;
 }
 
-static void doHash(const unsigned short *p, uint &h)
-{
-#if 1
-    // Copied from static uint hash(const QChar *p, int n).
-    // Possibly not the cheapest way.
-    h = (h << 4) + (*p++);
-    h ^= (h & 0xf0000000) >> 23;
-    h &= 0x0fffffff;
-
-    h = (h << 4) + (*p++);
-    h ^= (h & 0xf0000000) >> 23;
-    h &= 0x0fffffff;
-
-    h = (h << 4) + (*p++);
-    h ^= (h & 0xf0000000) >> 23;
-    h &= 0x0fffffff;
-
-    h = (h << 4) + (*p++);
-    h ^= (h & 0xf0000000) >> 23;
-    h &= 0x0fffffff;
-#else
-    // Faster, but probably less spread.
-    h ^= *(unsigned int *)p;
-#endif
-}
-
-uint qHash(const String &str)
-{
-    const unsigned short *p = (unsigned short *)str.constData();
-    const int s = str.size();
-    switch (s) {
-        case 0: return 0;
-        case 1: return *p;
-        case 2: return *(unsigned int *)p;
-        case 3: return (*(unsigned int *)p) ^ *(p + 2);
-        //case 3: return (*p << 11) + (*(p + 1) << 22) + *(p + 2);
-    }
-    uint h = 0;
-    doHash(p, h);
-    doHash(p + s / 2 - 2, h);
-    doHash(p + s - 4, h);
-    return h;
-}
-
 // The Java's hashing algorithm for strings is a variation of D. J. Bernstein
 // hashing algorithm appeared here http://cr.yp.to/cdb/cdb.txt
 // and informally known as DJB33XX - DJB's 33 Times Xor.