GeezerVisonThe World Wide Web, restored to 800 pixels of glory. | ||||||||||||||||||
| Home|About|Gaming cabinet|Archives|How it works|Starter sites | ||||||||||||||||||
GeezerVison is showing github.com — Speed up `IGzipFile.writelines()` by passing the lines to the write buffer by ptweezy · Pull Request #331 · pycompression/python-isal Conversation
Contributor
Since Python 3.12, With this PR, I measured on Python 3.14 in Docker on Linux, writing to an
A run of the same change on Python 3.13 gave about the same speedup. Errors for bad lines are the same as before, because they already came from the buffer's The new tests compare Checklist
Sorry, something went wrong. Uh oh!
There was an error while loading. Please reload this page. All reactionsio.IOBase.writelines() calls write() once per line, so each line ran the Python code of IGzipFile.write() before it reached the io.BufferedWriter that GzipFile buffers writes in since Python 3.12. On Python 3.12 and later, writelines() now passes the lines to the writelines() method of that buffer, which calls its own write() in C. On Python 3.14 on Linux, writing 100,000 lines of about 36 bytes to an io.BytesIO took 13.2 instead of 21.0 ms, and 4 MiB in 100-byte records took 9.3 instead of 12.6 ms. Lines of 64 KiB, text mode and Python 3.11 are unchanged. Closed files, read mode, and a write() that a subclass, a patch or an instance attribute replaced keep the io.IOBase method, so their errors and calls stay the same. If the lines themselves close the file while writelines() runs, the remaining lines now go into the write buffer and are dropped, where write() raised ValueError before.
ptweezy
force-pushed
the
writelines-buffer
branch
from
8a496d8 to
281b82c
Compare
This branch has not been deployedNo deployments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
ReviewersNo reviewsUh oh!
There was an error while loading. Please reload this page. AssigneesNo one assignedLabels
None yet
ProjectsMilestoneNo milestoneDevelopmentSuccessfully merging this pull request may close these issues. Uh oh!
There was an error while loading. Please reload this page. Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later. | ||||||||||||||||||
| You are visitor 01402503 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required. |