自己写一个python的fnv哈希的扩展,文件名fnv_module.c
编译
调用方法
测试了一下速度,50万次hash计算
平均3微秒一次,速度还算可以。
在fnv_module.c中PyLong_FromUnsignedLong(hash)那行,我原先用的是Py_BuildValue("i", hash)返回的数值老出现负值。
在google上搜一下,找到PyLong_FromUnsignedLong函数,它可以接受一个unsigned类型的整数,返回也是一个unsigned类型整数。
替换之后,完全正确。
附:fnv哈希的纯Python实现,只是效率太低,50万次计算hash需要32秒。
是c模块实现的效率的5%不到