Uh oh!
There was an error while loading. Please reload this page.
gh-129005: Remove copies from _pyio using take_bytes - #141539
Conversation
Memory usage now matches that of _io for large files
cmaloney
commented
Nov 14, 2025
Optimization enabled by gh-139871 (Trying to keep that one issue referencing all the things which I use it for; planning to expand the What's New with a single "here's all the modules that got faster" list once optimize) |
| @@ -620,15 +620,15 @@ def read(self, size=-1): | |||
| if n < 0 or n > len(b): | |||
| raise ValueError(f"readinto returned {n} outside buffer size {len(b)}") | |||
| del b[n:] | |||
There was a problem hiding this comment.
Is there a difference between b.resize(n) and del b[n:]?
There was a problem hiding this comment.
.resize() could grow while the del b[n:] never will. There's some code which does a = bytearray(b'12'); del a[3:] (intentionally del a slice past the end) as part of its buffer management. Generally I prefer resize because there's a lot less code involved than the slice code (and the slice code eventually calls resize anyways)
Uh oh!
There was an error while loading. Please reload this page.
…1539) Memory usage now matches that of _io for large files.
Memory usage now matches that of _io for large files.
For reference; this test goes from 8.5sec overall duration on my AMD 64 bit Arch Linux box to 7 seconds.