TextIO improvement:

- 25% speed increse in tell();
- f.seek(0, 1) now maps to f.seek(f.tell(), 0) instead of to f.tell().
This commit is contained in:
Guido van Rossum 2007-04-12 05:24:24 +00:00
parent 57b39e0916
commit aa43ed95cd

View File

@ -992,8 +992,9 @@ class TextIOWrapper(TextIOBase):
return self._encode_decoder_state(decoder_state, position)
decoder = pickle.loads(decoder_state)
n = 0
for i, b in enumerate(readahead):
n += len(decoder.decode(bytes([b])))
bb = bytes(1)
for i, bb[0] in enumerate(readahead):
n += len(decoder.decode(bb))
if n >= needed:
decoder_state = pickle.dumps(decoder, 2)
return self._encode_decoder_state(decoder_state, position+i+1)
@ -1005,7 +1006,8 @@ class TextIOWrapper(TextIOBase):
if whence == 1:
if pos != 0:
raise IOError("Can't do nonzero cur-relative seeks")
return self.tell()
pos = self.tell()
whence = 0
if whence == 2:
if pos != 0:
raise IOError("Can't do nonzero end-relative seeks")