龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > asp.net编程 >

测试哈希函数Hash性能评测

时间:2009-12-21 11:47来源:未知 作者:admin 点击:
分享到:
之前由于项目中用到了大规模的数据处理,使用了哈希函数作为应用,在此做了些工作将一些哈希( hash )函数的性能和冲突概率进行了测试、总结,并给出了推荐的几种较好的字符串哈

之前由于项目中用到了大规模的数据处理,使用了哈希函数作为应用,在此做了些工作将一些哈希( hash )函数的性能和冲突概率进行了测试、总结,并给出了推荐的几种较好的字符串哈希函数。

哈希的目的即将原有的长字符串压缩为32位、64位、128位的哈希编码存储,以节省存储空间。而在这个过程中,起重要作用的便是哈希函数。

在本实验中,采用了常见的一些哈希函数作为对比,并采用了10 million以上(千万级)的较大数据规模进行了测试。SET 1 :包含大小写字母、数字的,长度为3-12均匀分布,15 million 个样本。

SET 2 :仅包含小写字母的,长度为3-12均匀分布, 15 million 个样本

SET 3 :包含ASCII(32-127)中的常见的字符,长度10-30均匀分布,11 million 个样本。

最后在Debug模式下,进行了时间性能测试,即为上表中的最后一行,记录为平均每次哈希(Hash)消耗时间。

测试系统配置:

CPU: AMD 945 X4  MEMORY: 4G  SYSTEM: WINDOWS VISTA ULTIMATE (32 bit)

推荐:表中标红的为效果较好的算法,具统计和评论来说BKDR、SDBM、FNV_1 对大规模的字符串哈希来说,有较好的性能表现,推荐使用。同时,如果数据集在 million级以上的话,建议使用64位哈希函数,这样可以有效的避免冲突概率过高的情况。(10Million 上 64位哈希冲突率能到10e-6以下,经过测试)

在下面有全部代码,注释部分为算法的简单摘要,有兴趣的朋友可以去仔细参详下。


收藏文章
表情删除后不可恢复,是否删除
取消
确定
图片正在上传,请稍后...
评论内容为空!
还没有评论,快来抢沙发吧!

热评话题

按钮 内容不能为空!
立刻说两句吧! 查看0条评论
精彩图集

赞助商链接