diff options
author | Taras Voinarovskyi <voyn1991@gmail.com> | 2018-02-21 23:05:31 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-02-21 23:05:31 +0200 |
commit | 0c0c7eae13f3b2b8e3ed7c443adef39cb6802a67 (patch) | |
tree | 2cb5e5660842baa9dcd08a7f716c3a4461f20de7 /kafka/record/util.py | |
parent | 92635d9bfff5593ba865003dd3010a0feb280140 (diff) | |
download | kafka-python-0c0c7eae13f3b2b8e3ed7c443adef39cb6802a67.tar.gz |
Use hardware accelerated CRC32C function if available (#1389)
* Use hardware accelerated CRC32C function if available
* Add doc notice of optional `crc32c` package
Diffstat (limited to 'kafka/record/util.py')
-rw-r--r-- | kafka/record/util.py | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/kafka/record/util.py b/kafka/record/util.py index 55d7adb..74b9a69 100644 --- a/kafka/record/util.py +++ b/kafka/record/util.py @@ -1,6 +1,10 @@ import binascii from kafka.record._crc32c import crc as crc32c_py +try: + from crc32c import crc32 as crc32c_c +except ImportError: + crc32c_c = None def encode_varint(value, write): @@ -113,11 +117,15 @@ def decode_varint(buffer, pos=0): raise ValueError("Out of int64 range") -def calc_crc32c(memview): +_crc32c = crc32c_py +if crc32c_c is not None: + _crc32c = crc32c_c + + +def calc_crc32c(memview, _crc32c=_crc32c): """ Calculate CRC-32C (Castagnoli) checksum over a memoryview of data """ - crc = crc32c_py(memview) - return crc + return _crc32c(memview) def calc_crc32(memview): |