[Python-checkins] cpython: On behalf of Nadeem Vawda: issue #10376: micro-optimize reading from a Zipfile.

antoine.pitrou python-checkins at python.org
Sat Jun 23 16:48:23 CEST 2012


http://hg.python.org/cpython/rev/0e8285321659
changeset:   77631:0e8285321659
user:        Antoine Pitrou <solipsis at pitrou.net>
date:        Sat Jun 23 16:44:48 2012 +0200
summary:
  On behalf of Nadeem Vawda: issue #10376: micro-optimize reading from a Zipfile.
(patch by Serhiy)

files:
  Lib/zipfile.py |  18 ++++++++++--------
  1 files changed, 10 insertions(+), 8 deletions(-)


diff --git a/Lib/zipfile.py b/Lib/zipfile.py
--- a/Lib/zipfile.py
+++ b/Lib/zipfile.py
@@ -733,12 +733,13 @@
                 buf += self._read1(self.MAX_N)
             return buf
 
-        n -= len(self._readbuffer) - self._offset
-        if n < 0:
-            buf = self._readbuffer[self._offset:n]
-            self._offset += len(buf)
+        end = n + self._offset
+        if end < len(self._readbuffer):
+            buf = self._readbuffer[self._offset:end]
+            self._offset = end
             return buf
 
+        n = end - len(self._readbuffer)
         buf = self._readbuffer[self._offset:]
         self._readbuffer = b''
         self._offset = 0
@@ -774,12 +775,13 @@
             buf += data
             return buf
 
-        n -= len(self._readbuffer) - self._offset
-        if n < 0:
-            buf = self._readbuffer[self._offset:n]
-            self._offset += len(buf)
+        end = n + self._offset
+        if end < len(self._readbuffer):
+            buf = self._readbuffer[self._offset:end]
+            self._offset = end
             return buf
 
+        n = end - len(self._readbuffer)
         buf = self._readbuffer[self._offset:]
         self._readbuffer = b''
         self._offset = 0

-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list