在下面的基准测试中,我发现函数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发布于 2020-08-05 21:03:06
我发现了这样的讨论:https://mail.python.org/pipermail/python-3000/2008-March/012728.html,格雷戈里·P·史密斯(在与Guido的讨论中)写道:
从binascii中删除会破坏平台或嵌入式系统的功能,这些平台或嵌入式系统需要不包括zlib的crc32。有人在乎吗?
TL;DR:binascii实现是针对没有zlib (或者不想包含它)的系统的,因此它被认为是次优的,但是如果删除就会破坏。
https://stackoverflow.com/questions/44502855
复制相似问题