2011-07-31 56 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