[Python-Dev] String hash function multiplier

Jeff Epler jepler at unpythonic.net
Tue Apr 13 21:09:54 EDT 2004


With -O2 -mcpu=i686 or newer, gcc uses "imul" for both 100003 and 65599,
rather than shifts and adds.

There may be a few people who care about some other processor, but I
wouldn't listen to them. (the only non-x86 CPU I program for on a weekly
basis doesn't have hardware multiply, but it's also much too small for
Python)

The current value goes back a long way:
http://cvs.sourceforge.net/viewcvs.py/python/python/dist/src/Objects/stringobject.c#rev2.31
... all the way back to when Python did string haching instead of
hashing.

Other than some abstract beauty to 65599, are there some other practical
advantages I'm missing?

Jeff



More information about the Python-Dev mailing list