ハッシュテーブルの実装で使用するための、良好な(つまりほぼ均一な)分布を持つ高速ハッシュ関数を探しています。
ハッシュテーブルは、整数キーで値を格納するためにのみ使用されます。
整数の下位数ビットをハッシュとして使用できますか?
例:int key = n&15; そして、それらを格納するための16個のスロットを持つアレイを作成します。
何かお勧めはありますか?
あなたはここでxxhashを見ることができます
あなたが言及したハッシュ関数は非常に高速ですが、それも非常に悪いです。「ばかげた」ハッシュ関数が必要な場合は、モジュラスを検討できます。
例:
int key = item % size_of_hash_table
さて、昨夜、私はいくつかのトップガンハッシャーと38の異なるキーをカバーする多目的なハッシュテスト(Cで)を行いました。
http://www.overclock.net/t/1319572/benchmarking-the-fastest-hash-function/0_20#post_18495990でベンチマークを行って ください。
IntelとAMD、およびIntel12.1コンパイラとMicrosoft16 ( VS2010)コンパイラの組み合わせがあなたの助けを借りてどのように動作するかを明らかにしていただければ幸いです。