Accellerate binary readline() a bit.
diff --git a/Lib/io.py b/Lib/io.py
index f1be881..4d46b47 100644
--- a/Lib/io.py
+++ b/Lib/io.py
@@ -298,17 +298,23 @@
### Readline ###
- def readline(self, sizehint: int = -1) -> bytes:
- """For backwards compatibility, a (slow) readline()."""
- if sizehint is None:
- sizehint = -1
- res = b""
- while sizehint < 0 or len(res) < sizehint:
- b = self.read(1)
+ def readline(self, limit: int = -1) -> bytes:
+ """For backwards compatibility, a (slowish) readline()."""
+ if limit is None:
+ limit = -1
+ res = bytes()
+ while limit < 0 or len(res) < limit:
+ readahead = self.peek(1, unsafe=True)
+ if not readahead:
+ break
+ n = (readahead.find(b"\n") + 1) or len(readahead)
+ if limit >= 0:
+ n = min(n, limit)
+ b = self.read(n)
if not b:
break
res += b
- if b == b"\n":
+ if res.endswith(b"\n"):
break
return res