hash algorithm for nginx cache

Igor Sysoev is at rambler-co.ru
Wed Apr 22 15:07:48 MSD 2009


On Wed, Apr 22, 2009 at 01:22:52AM +0200, Joe Bofh wrote:

> 
> FWIW, I got a follow up reply from Austin (the chap that created 
> murmurhash). He sez:
> 
> "MurmurHash2, MD5, Lookup3, and any cryptographic hash all have 
> statistically-correct collision behaviour - the average number of 
> collisions they create on a given keyset is the same as if the hash 
> function returned a totally random number. For comparison, FNV mixes 
> very poorly and tends to produce massively more collisions than expected 
> on "sparse" keys with only a few bits set, and SuperFastHash will tend 
> to produce a higher than expected number of collisions on keysets where 
> keys differ in only 2-3 bits - see 
> http://murmurhash.googlepages.com/statistics and the associated pages 
> for more info."
> 
> So it looks like collision-wise, it's comparable.

I'm not expert in cryptography, but it seems to me that 128-bit MD5
should have though not 2^64 times less collisions, but at least 10^9 times
less than any 64-bit hash.

> --J
> 
> 
> Johan Bergstr??m wrote:
> > Hey,
> > 
> > On Apr 21, 2009, at 17:46 , Joe Bofh wrote:
> > 
> >>
> >> I guess if you put in an option to specify the hash, that would work
> >> too. FNV and Murmur have been adopted on various open source  
> >> projects as
> >> optional hashs because of the hashing performance.
> > 
> > For reference; libmemcached - another high performing project -
> > nowadays include most current hashing algorithms. Fnv1a and murmur are
> > two of them. See: 
> > http://hg.tangent.org/libmemcached/file/048b32d9d1ae/docs/memcached_behavior.pod
> >   (sorry for bad linkage, the site docs/manpage hasn't been updated
> > for a while)
> > 
> > Two my knowledge, murmur/murmur2 is the best pick for a high
> > performance/low (but not zero) collision tradeoff.
> 
> -- 
> Posted via http://www.ruby-forum.com/.

-- 
Igor Sysoev
http://sysoev.ru/en/





More information about the nginx mailing list