]> granicus.if.org Git - python/commitdiff
Replaced arbitrary addend in tuple_hash with one that is known to generate
authorRaymond Hettinger <python@rcn.com>
Fri, 4 Jun 2004 06:35:20 +0000 (06:35 +0000)
committerRaymond Hettinger <python@rcn.com>
Fri, 4 Jun 2004 06:35:20 +0000 (06:35 +0000)
many more prime multipliers and that performs well on collision tests.

Objects/tupleobject.c

index 4cb80f0ed50a1e9aa64f0b9bb52768f709e40e36..ff20b43eeba47061233c750e00bc04b7686cb594 100644 (file)
@@ -256,6 +256,14 @@ Done:
        return result;
 }
 
+/* The addend 82520, was selected from the range(0, 1000000) for 
+   generating the greatest number of prime multipliers for tuples 
+   upto length eight:
+
+     1082527, 1165049, 1082531, 1165057, 1247581, 1330103, 1082533, 
+     1330111, 1412633, 1165069, 1247599, 1495177, 1577699
+*/
+
 static long
 tuplehash(PyTupleObject *v)
 {
@@ -270,7 +278,7 @@ tuplehash(PyTupleObject *v)
                if (y == -1)
                        return -1;
                x = (x ^ y) * mult;
-               mult += 69068L + len + len;
+               mult += 82520L + len + len;
        }
        if (x == -1)
                x = -2;