【问题标题】:Generating multiple hash values for same key using murmerHash使用 murmerHash 为同一个键生成多个哈希值
【发布时间】:2018-02-19 17:17:14
【问题描述】:

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

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

但是当我拥有大量密钥(即 1000 万个密钥)时,时间效率并不高。有没有其他方法可以加快速度?

【问题讨论】:

  • mmh... 多线程?
  • 谢谢!!我正在尝试是否可以在没有多线程的情况下完成。
  • 然后让 GPU 处理它
  • 您可以加快速度的一件事是在循环之前计算一次 strlen(key) 的结果,并将其存储到局部变量中,而不是在每次迭代时不必要地重新计算循环。
  • @JesperJuhl 看看seed ;)

标签: c++ hash murmurhash


【解决方案1】:

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

注意——我不记得我在哪里读到的,也不记得该公式归谁所有。如果有人知道,请告诉我,以便我可以正确归因,以便其他人可以验证此解决方案的正确性。

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

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

加法、乘法和调制应该比生成一个全新的哈希更快。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-01
    • 2018-10-14
    • 1970-01-01
    • 2018-07-27
    • 1970-01-01
    • 1970-01-01
    • 2016-09-13
    相关资源
    最近更新 更多