4

len関数のパラメーターにどの値を指定する必要があるかについて混乱していMurmurHash3_x86_128()ます(同様の関数もあります)。Murmurhash3 のコードはここにあります。

あなたの答えが鍵の長さだと言うなら、154行目のコードを説明してください。

4

1 に答える 1

4

ほとんどの場合、154 行目のコードのバイト単位でハッシュするデータの長さです。

const int nblocks = len / 16;

この長さを 128 ビット ブロック (またはそれぞれ 16 バイト) に分割します。これは、MurmurHash3_x86_128()反復ごとに 16 バイト (4 x uint32) を処理および混合するため、より高速なハッシュを促進するためです。

205 行目で次のことがわかります。

switch(len & 15)

これは、サイズが 16 の倍数でない場合に試行中のバイトをキャッチし、switch ケースがそれらを最終的なハッシュに結合します。

于 2012-06-15T06:55:23.000 に答える