在以下基准测试中,我发现函数zlib.crc32
的速度约为binascii.crc32
的2.5倍。为什么这样,使用zlib
模块的实现有什么缺点?
#!/usr/bin/python3
import timeit
print("b:", timeit.timeit("binascii.crc32(data)", setup="import binascii, zlib; data=b'X'*4096", number=100000))
print("z:", timeit.timeit("zlib.crc32(data)", setup="import binascii, zlib; data=b'X'*4096", number=100000))
结果:
b: 1.0176826480001182
z: 0.4006126120002591
答案 0 :(得分:2)
我找到了这个讨论: https://mail.python.org/pipermail/python-3000/2008-March/012728.html(格雷戈里·史密斯(在与Guido的讨论中)写道:
从binascii中删除会破坏平台或嵌入式系统的功能 想要不包含zlib的crc32。有人在乎吗?
TL; DR :binascii实现是针对没有zlib(或不想包含它)的系统的,因此,它被认为不是最佳选择,但是如果删除,则会破坏性能