工作内容:
调研并整理Murmurhash算法与Cityhash算法,比较其碰撞率,耗时等性能。
结果如下:
测试数据量:13584385
| Murmurhash2 | Murmurhash2A | Cityhash |
种子长度=40 | |||
碰撞率 | 0.013759 | 0.0122196 | 0.0137472 |
耗时 | 5.17s | 4.31 | 4.45 |
种子长度=50 | |||
碰撞率 | 0.0115036 | 0.00993221 | 0.0114863 |
耗时 | 5.52s | 4.63s | 4.76s |
种子长度=60 | |||
碰撞率 | 0.00977895 | 0.00823666 | 0.00980089 |
耗时 | 5.86 | 5.43 | 4.73 |
|
|
|
|
复杂度:Cityhash大于Murmurhash
种子长度:种子越长,碰撞率越小,耗时越多
综合分析:就长字符串Hash来说,Murmurhash2A较优
程序目录:/usr/home/mingyang/MyCodes/HashSolution/
程度接口:见目录中Readme
此工作强度与紧度均不大,在此过程中恢复了在Linux下编程能力,也熟悉了VIM,并对Linux与Vim的常用命令也所总结。
本项工作只是涉及了标准C++的编程,所以较为顺手,但若涉及Linux下的多线程与复杂算法的调试就不易恢复或顺利完成了。
所以平常及假期要熟悉线程编程与GDB的调试等能力。