benchmarking Perl client hash functions

Larry Leszczynski larryl@emailplus.org
Mon, 19 Jul 2004 16:32:41 -0400 (Eastern Daylight Time)


On Mon, 19 Jul 2004, Brad Fitzpatrick wrote:

> >    'crc32'   meaning "(crc32(shift) >> 16) & 0x7fff"
>
> Where does 0x7fff come from?  Or 16 for that matter.
>
> Is there something magic about having 32767 buckets?

crc32 returns a 32-bit integer, so this just uses the top two bytes as the
hash value.  Why this is good, I don't know, but it seems to work pretty
well and is pretty fast.  While Googling I managed to find some references
that mention that using all 32 bits of the crc32 value did not give a
particularly good distribution, but I couldn't find anything mentioning
why using just the top half works better.  Maybe Troy (original poster)
can elaborate on the details.


Larry