summaryrefslogtreecommitdiff
path: root/kafka/record/util.py
diff options
context:
space:
mode:
authorTaras Voinarovskyi <voyn1991@gmail.com>2018-02-21 23:05:31 +0200
committerGitHub <noreply@github.com>2018-02-21 23:05:31 +0200
commit0c0c7eae13f3b2b8e3ed7c443adef39cb6802a67 (patch)
tree2cb5e5660842baa9dcd08a7f716c3a4461f20de7 /kafka/record/util.py
parent92635d9bfff5593ba865003dd3010a0feb280140 (diff)
downloadkafka-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.py14
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):