[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