比较了几种返回int32类型的hash算法,hash128字节和10k字节数据的速度(Macbook pro late 2011 2.4 GHz Intel Core i5):

单线程执行10000次,单位ns:

crc32 str1 :	 6960 
crc32 str2 :	 2923565 
jh32 str1 :	 4346 
jh32 str2 :	 1870650 
city32 str1 :	 6254 
city32 str2 :	 2070662 
spk32 str1 :	 4372 
spk32 str2 :	 594034

其中:

crc32表示以静态crc32 table实现的crc32算法 

jh32表示Bob Jenkins的lookup3提供的hash32算法(完成与May 2006)

city32表示google的CityHash库提供的32bit hash算法(最近一次更新是在August 5 2012),其声称该算法每cpu cycle可以hash6字节,碰撞数据量(Bob jenkins的frog测试)至少为272短key(几百字节)

spk32表示Bob Jenkins的SpookyHashV2 32bit算法,其声称该算法每cpu cycle可以hash 2字节,碰撞数据量(Bob jenkins的frog测试)至少为272短key(几百字节)

可以看出SpookyHashV2是继lookup3之后,更优秀的hash算法(其还支持输入seed)。

lookup3提供的hash32算法也被暴雪公司使用于解析其各游戏的MPQ文件

评论模块尚未加载