New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add _GenerateCRCTable() to zipfile.py to pre-compute CRC Table #74661
Comments
It is wasteful to generate the CRC Table every time, via _crctable = list(map(_gen_crc, range(256))). Better to have a pre-computed table. I will submit the patch which incorporates this feature along with micro-benchmark results. Related issue: |
It looks like _GenerateCRCTable() is already implemented here: https://svn.python.org/projects/python/trunk/Lib/zipfile.py The question is, why isn't it implemented here ? https://github.com/python/cpython/blob/master/Lib/zipfile.py |
This is not needed after all jkloth explained. Please feel free to close. |
After some investigations this idea no longer looks good to me. The table of 256 32-bit integers will take at least 44 lines. This is too large. It is easier to check the algorithm than all these numbers. The error even in one digit can break all, but for testing we should check every element of the table. In any case we would need a generating code, either for generating the sources, or for testing. Current generating code is 25% faster than the code used in 2.7, and (surprisingly!) Python 3.7 is 50% faster than Python 2.7 in the computation of the same code. On my computer the generating takes 1 ms (the startup time of the interpreter is 50 ms), and the table is generated only if ZIP file decryption is used, and only once. |
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
bugs.python.org fields:
The text was updated successfully, but these errors were encountered: