BYVoid对常用的几种字符串哈希函数进行了一次小小的评测。其评测结果,按照得分从高到低依次为BKDRHash,APHash,DJBHash,JSHash,RSHash,SDBMHash,PJWHash,ELFHash。
其中,最优的字符串哈希算法BKDRHash函数实现如下:
// BKDR Hash Function
unsigned int BKDRHash(const char *str)
{
unsigned int seed = 131; // 31 131 1313 13131 131313 etc..
unsigned int hash = 0;
while (*str){
hash = hash * seed + (*str++);
}
return (hash & 0x7FFFFFFF);
}
比如,哈希字符串“Hello,World!”将会得到数字“632968537”。
©qingdujun
2018-9-1 于 北京 海淀
References:
[1] https://www.byvoid.com/zhs/blog/string-hash-compare