Replaced arbitrary addend in tuple_hash with one that is known to generate

many more prime multipliers and that performs well on collision tests.
This commit is contained in:
Raymond Hettinger 2004-06-04 06:35:20 +00:00
parent 4e49b836db
commit 4ec44e851d

View 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;