簡體   English   中英

在C ++中,對於unordered_map / set是否有更快的哈希函數?

[英]Are there faster hash functions for unordered_map/set in C++?

默認函數來自std :: hash。 我想知道是否有更好的哈希函數可以節省計算時間? 用於整數鍵和字符串鍵。

我嘗試使用Google的City Hash的整數和字符串鍵,但其性能比std :: hash差一些。

std :: hash函數的性能已經不錯。 我認為您應該嘗試開源哈希函數。

檢查一下https://github.com/Cyan4973/xxHash 我從其描述中引用:“ xxHash是一種非常快速的Hash算法,以RAM速度限制運行。它成功完成了SMHasher測試套件,該套件評估了哈希函數的沖突,分散和隨機性。代碼具有高度的可移植性,並且哈希在所有平台(小/大端)。”

此線程也來自該站點上的另一個問題: 快速跨平台C / C ++哈希庫 FNV,Jenkins和MurmurHash速度很快。

您需要在什么意義上解釋“更好”? 最快的哈希函數將僅使用該值,但這是沒有用的。 一個更具體的答案將取決於您的內存限制以及您願意接受的碰撞概率。

還要注意,內置的哈希函數針對不同類型的構建方式也有所不同,因此,我希望對intstring的哈希函數已經在時間和復雜性方面進行了優化。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM