わけあってハッシュ関数を使ったプログラムを作ることになりました. 入力キーには仕様的に数値的限定をかけて,ゼロから1億程度としました. ならば,20億入る符号付き32bitで十分なはずです. そんなに長くない32bitを出してくれるハッシュ関数として,MurMurがあったので, ベンチマークスーツでその性能を検証してみました. libmemcachedでは,種類としてはFNV,crc32(?),hsieh,murmur,jenkins,md5がサポートされてます. KyotoCabinetではmurmurとfnv. redisでは入力と出力を64bitに拡張したバージョンのmurmurが使われています. phpはクライアントとしてはさすがにデフォルトで沢山サポートされてますね.md?,sha?,ripemd?,whirpool,tiger?,snefru,gost,adler32,crc?
![ハッシュ関数ベンチマーク - なぜか数学者にはワイン好きが多い](https://cdn-ak-scissors.b.st-hatena.com/image/square/d25341ee0ef56aaa8eb6e96e414a919ce47f1d39/height=288;version=1;width=512/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Ft%2Ftullio%2F20120701%2F20120701212654.png)