python的fnv哈希扩展

本文介绍了如何在Python中自定义一个FNV哈希扩展,通过C语言编写fnv_module.c并编译为动态链接库。文章展示了C模块的实现过程,包括哈希函数的定义和Python接口的封装。作者还对比了C扩展和纯Python实现的性能差异,C扩展在50万次哈希计算中仅需1.589秒,而纯Python版本则需要32秒,效率提高了近5倍。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

自己写一个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%不到

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值