为什么zlib.crc32比bina​​scii.crc32更快?

时间:2017-06-12 15:11:19

标签: python

在以下基准测试中,我发现函数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

1 个答案:

答案 0 :(得分:2)

我找到了这个讨论: https://mail.python.org/pipermail/python-3000/2008-March/012728.html(格雷戈里·史密斯(在与Guido的讨论中)写道:

从binascii中删除会破坏平台或嵌入式系统的功能 想要不包含zlib的crc32。有人在乎吗?

TL; DR :binascii实现是针对没有zlib(或不想包含它)的系统的,因此,它被认为不是最佳选择,但是如果删除,则会破坏性能