之前由于项目中用到了大规模的数据处理,使用了哈希函数作为应用,在此做了些工作将一些哈希( 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 个样本。
最后在Release模式下,进行了时间性能测试,即为上表中的最后一行,记录为平均每次哈希(Hash)消耗时间。性能测试,横向来看,差距都并不大,对于哈希函数的选择上,还是应首选冲突小的较好。
测试系统配置:
CPU: AMD 945 X4 MEMORY: 4