hash algorithm for nginx cache

Joe Bofh lists at ruby-forum.com
Wed Apr 22 03:22:52 MSD 2009


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.

--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/.





More information about the nginx mailing list