blizzard hash for android 降低暴雪哈希的内存消耗(理论上牺牲碰撞率),千万量级别以内的数据,碰撞率和内存消耗都优于bloom filter
blizzard_hash_for_android 提供了一种有效的方法来降低暴雪哈希的内存消耗,理论上尽管牺牲了碰撞率,但在千万量级别以内的数据情况下,其碰撞率和内存消耗均优于传统的 Bloom Filter。该算法的 node 结点存放了两个关键属性:
-
nHashA:nHashA 取 byte 的前 7 位(1~127),用于存储 HashString 返回值(long 类型)的低 7 位,这一值主要用于处理第一次碰撞的哈希值。
-
bExists:bExists 取 byte 的最后 1 位,用以标记某哈希地址是否已被占用。
在实际测试中,当数据量为 2000 条、表长度设置为 2^21(即 2097152)时,所占用的内存大小为 2^21*8(即 16M),且碰撞次数为 0。
如果你对暴雪哈希算法的源码感兴趣,可以查看 暴雪哈希算法全部源码。对于更复杂的大数据处理,pwwMap 完美哈希也是一个值得关注的工具,详细信息可以参考 大数据处理利器pwwMap完美哈希。
为了进一步深入了解暴雪字符串哈希的具体实现和细节,你还可以下载相关的 暴雪字符串哈希 文件进行学习。
下载地址
用户评论