CityHash

CityHash在python上可以直接导入模块使用。https://pypi.org/project/cityhash/但是可能仅支持Linux系统,不支持Windows系统(反正本菜鸡在瘟十上面各种报错提示要修改XX文件)...

CityHash算法由Google公司于2013年公布,是个略久远的算法了~

CityHash 的主要优点是大部分步骤包含了至少两步独立的数学运算。现代 CPU 通常能从这种代码获得最佳性能。但 CityHash 也有其缺点:代码较同类流行算法复杂。

人家当时对这个字符串哈希算法的要求是:

  1. quick and dirty(dirty???我没太理解)
  2. suitable for a library
  3. suitable for fingerprinting(对于要生成指纹的童鞋来说是个很友好的算法!)
  4. secure

本着比Murmurhash2更高(质量)更快的要求,他们创造了CityHash。

CityHash64的整体框架是:

if (N <= 32)
   if (N <= 16)
      if (N <= 8)
         ...
      else
         ...
   else
      ...
else if (N <= 64) {
   // Handle 33 <= N <= 64
   ...
} else {
   // Handle N > 64
   int iters = ⌊N/64⌋
   ...
}

预处理:

k0,k1,k2是2^64附近的素数,并且K=k2+2N

当1≤N≤3时:

当4≤N≤8时:

当9≤N≤16时:

当17≤N≤32时:

当33≤N≤64时:

感兴趣的可以去瞅瞅源码https://github.com/google/cityhash

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值