多種hash算法將文章標識翻譯成整型ID的衝突率測試

1.測試內容:算法

使用多種hash算法將文章標識翻譯成整型ID後的衝突數和衝突率的比較。函數

2.測試方法性能

1. CRC32:把任意長度的字符串經過散列算法,最終變換成固定長度(int32)的摘要輸出測試

2. Blizzard的Hashstring: 暴雪公司設計的字符串轉整型的hash函數,hash值爲int32.優化

3. BKDRHash:  經常使用的字符串哈希函數,hash值也爲int32.spa

4. MD5 :目前被大量普遍使用的散列算法之一。MD5散列長度一般是128bit.net

5. MD5 To 32bit:在MD5值的基礎上作壓縮,轉換成32位整型ID。翻譯


3.測試數據設計

全部文章key數 去重後的key數
4136019 4135999

4.測試結果blog

5.結果分析

1.想直接用生成int32的hash函數來翻譯文章的key,產生衝突的數會比較多。

2.MD5雖然能保證對文章key不衝突,但生成的值不是整型,不友好。

3.對MD5壓縮翻譯成整型值(至關於二次hash),能夠下降衝突,但性能開銷明顯增大(看最後一列時間對比)。

6.思考:

對於用純hash算法完成翻譯文章key的方式,衝突理論上確定存在,咱們只能但願儘可

能地減小衝突(410多萬數據最多幾十次衝突),同時還要考慮性能!

接下來還能夠走的路,尋找更大hash值的算法,或者優化組合下降二次hash的性能損

耗。

或者最終另闢蹊徑,跳出純算法的思惟,尋找更合適的方法!

相關文章
相關標籤/搜索