[Revisit.SolidMCP] Hash Algorithms
Hash总是免不了的,那么要关注的不过是选择什么样的Hash算法。高深的算法, Piaoger自然是写不出,但怎么着也能找两个比较帅的,口碑比较好的。
用Google搜索了一下,然后看了Google Sparsh Hash, HyperTable等几个开源库,似乎也就不外乎那么三四种:
----------------------------------------------------------------------------
>> Paul Hsieh's SuperFastHash
从这厮的名字看来,那肯定是超级快。
http://www.azillionmonkeys.com/qed/hash.html
>> MurmurHash3
这家伙作者似乎已经被Google收编。
它的速度似乎很快,在HyperTable中是默认的Hasher。
http://code.google.com/p/smhasher/
>> Lookup3似乎比较牛X,而且在2007年算法还有更新。
http://burtleburtle.net/bob/hash/doobs.html
>> Thomas Wang的Integer Hash
主要是针对Integer Type,在不少开源库中有应用。
http://www.cris.com/~Ttwang/tech/inthash.htm
----------------------------------------------------------------------------
话说回来,其实SuperFastHarsh、MurmurHash3和Lookup3其实效率都差不了多少,从HyperTable的代码看来,MurmurHash3号称更快一些。
在Lookup3页面有对这些Hasher的点评,我们能找到更多的专业点评。
Material:
http://blog.clawpaws.net/post/2007/04/22/Good-Hash-Functions
-Piaoger