2011-07-31 57 views
1

我正在寻找快速哈希算法。其实,我正在尝试构建一个哈希表,其中的键是URL的。我使用MD5来散列URL,但是它太慢了(我使用了Java的内置函数)。任何人都可以通过通知一些快速散列算法来帮助我。搜索快速哈希算法

+0

你试图解决什么问题?为什么它太慢?你必须产生多少哈希值,所以你需要更快的解决方案? PLease提出更多意见,以便我们能够更好地为您提供帮助。 – 2011-07-31 23:28:11

+0

简单的校验和应该很快,如果速度是真正的问题,您可以将其基于URL的前缀(或后缀)。 – Patrick87

+0

正如我在你的原始问题中所说的,如果你想要正确性,单独的标准哈希函数不会削减它。您需要使用密码散列,或者存储原始文本(例如使用Trie)。 –

回答

6

Java的String类已实现.hashCode()。对于Java来说,这可能是最快的32位散列,因为它在内核上进行了大量优化。这也是使用内置集合时使用的散列,如java.util.HashMap

+1

.hashcode()给出了一个32位散列(一个int) –

+0

,但.hashCode()不需要是唯一的,使用它时必须考虑! – Urobe

3

谷歌开源的一个非常快的散列算法中:CityHash

0

MD5是加密散列,所以它会比非加密散列是缓慢的。正如Yann所说,如果你想要一个64位散列,那么Java散列可能是最快的。

如果不适合,那么还有其他快速的非加密散列可用于各种大小,如Fowler–Noll–Vo