使用murmerHash为相同的密钥生成多个哈希值

时间:2018-02-19 17:17:14

标签: c++ hash murmurhash

我使用MurmerHash为相同的密钥生成一堆哈希值,如下所示。它为50个不同的种子输出50个不同的哈希值。

for(int seed=0; seed<50; seed++)
  MurmurHash3_x86_32(key, strlen(key), seed, &hash);

但是当我有大量的密钥,即1000万个密钥时,效率并不高。有没有其他方法可以让它更快?

1 个答案:

答案 0 :(得分:0)

已经有一段时间了,但是看到了这一点后,我想我会为需要它的其他人提供答案。

注意-我不记得在哪里读过这篇文章,也不知道该公式的归属对象。如果有人知道,请告诉我,以便我可以适当地归因于此,以便其他人可以验证此解决方案的正确性。

通过组合2个独立的哈希,可以生成n个独立的哈希。

for (i = 0; i < n; i++) {
    (hash1 + i * hash2) % max_hash_size;
}

加,乘和调制应该比生成全新的哈希更快。

我将MurmurHash与两个不同的种子一起使用,然后将它们组合以生成所需的额外哈希值。

我希望我能记得我在哪里读到的......