問題描述
我有很多不相關的命名事物,我想對其進行快速搜索.土豚"在任何地方都是土豚",因此散列字符串并重用整數可以很好地加速比較.整個名稱集是未知的(并且隨著時間的推移而變化).什么是快速字符串散列算法,它會生成小的(32 或 16)位值并具有低沖突率?
I have lots of unrelated named things that I'd like to do quick searches against. An "aardvark" is always an "aardvark" everywhere, so hashing the string and reusing the integer would work well to speed up comparisons. The entire set of names is unknown (and changes over time). What is a fast string hashing algorithm that will generate small (32 or 16) bit values and have a low collision rate?
我希望看到特定于 C/C++ 的優(yōu)化實現.
I'd like to see an optimized implementation specific to C/C++.
推薦答案
FNV 變體之一 應該滿足您的要求.它們速度很快,并產生相當均勻分布的輸出.
One of the FNV variants should meet your requirements. They're fast, and produce fairly evenly distributed outputs.
這篇關于具有 32 位整數的低沖突率的快速字符串散列算法的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!