mirror of
https://github.com/python/cpython.git
synced 2025-12-05 00:52:25 +00:00
Use zlib's crc32 routine instead of binascii when available. zlib's is faster
when compiled properly optimized and about the same speed otherwise.
This commit is contained in:
parent
bde40078b0
commit
b89a096d6d
1 changed files with 5 additions and 3 deletions
|
|
@ -6,8 +6,10 @@ import binascii, cStringIO
|
||||||
|
|
||||||
try:
|
try:
|
||||||
import zlib # We may need its compression method
|
import zlib # We may need its compression method
|
||||||
|
crc32 = zlib.crc32
|
||||||
except ImportError:
|
except ImportError:
|
||||||
zlib = None
|
zlib = None
|
||||||
|
crc32 = binascii.crc32
|
||||||
|
|
||||||
__all__ = ["BadZipfile", "error", "ZIP_STORED", "ZIP_DEFLATED", "is_zipfile",
|
__all__ = ["BadZipfile", "error", "ZIP_STORED", "ZIP_DEFLATED", "is_zipfile",
|
||||||
"ZipInfo", "ZipFile", "PyZipFile", "LargeZipFile" ]
|
"ZipInfo", "ZipFile", "PyZipFile", "LargeZipFile" ]
|
||||||
|
|
@ -940,7 +942,7 @@ class ZipFile:
|
||||||
if not buf:
|
if not buf:
|
||||||
break
|
break
|
||||||
file_size = file_size + len(buf)
|
file_size = file_size + len(buf)
|
||||||
CRC = binascii.crc32(buf, CRC)
|
CRC = crc32(buf, CRC)
|
||||||
if cmpr:
|
if cmpr:
|
||||||
buf = cmpr.compress(buf)
|
buf = cmpr.compress(buf)
|
||||||
compress_size = compress_size + len(buf)
|
compress_size = compress_size + len(buf)
|
||||||
|
|
@ -983,7 +985,7 @@ class ZipFile:
|
||||||
zinfo.header_offset = self.fp.tell() # Start of header bytes
|
zinfo.header_offset = self.fp.tell() # Start of header bytes
|
||||||
self._writecheck(zinfo)
|
self._writecheck(zinfo)
|
||||||
self._didModify = True
|
self._didModify = True
|
||||||
zinfo.CRC = binascii.crc32(bytes) # CRC-32 checksum
|
zinfo.CRC = crc32(bytes) # CRC-32 checksum
|
||||||
if zinfo.compress_type == ZIP_DEFLATED:
|
if zinfo.compress_type == ZIP_DEFLATED:
|
||||||
co = zlib.compressobj(zlib.Z_DEFAULT_COMPRESSION,
|
co = zlib.compressobj(zlib.Z_DEFAULT_COMPRESSION,
|
||||||
zlib.DEFLATED, -15)
|
zlib.DEFLATED, -15)
|
||||||
|
|
@ -1041,7 +1043,7 @@ class ZipFile:
|
||||||
if extra:
|
if extra:
|
||||||
# Append a ZIP64 field to the extra's
|
# Append a ZIP64 field to the extra's
|
||||||
extra_data = struct.pack(
|
extra_data = struct.pack(
|
||||||
'<hh' + 'q'*len(extra),
|
'<HH' + 'Q'*len(extra),
|
||||||
1, 8*len(extra), *extra) + extra_data
|
1, 8*len(extra), *extra) + extra_data
|
||||||
|
|
||||||
extract_version = max(45, zinfo.extract_version)
|
extract_version = max(45, zinfo.extract_version)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue