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⌋
   ...
}

预处理:

CityHash_第1张图片

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

当1≤N≤3时:

CityHash_第2张图片

当4≤N≤8时:

当9≤N≤16时:

CityHash_第3张图片

当17≤N≤32时:

CityHash_第4张图片

当33≤N≤64时:

CityHash_第5张图片

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

 

你可能感兴趣的:(算法)