diff options
author | Bas Westerbaan <bas@westerbaan.name> | 2014-06-14 18:26:30 +0200 |
---|---|---|
committer | Bas Westerbaan <bas@westerbaan.name> | 2014-06-14 18:26:30 +0200 |
commit | ba8cf1c402fe68f283480c9abbf7707d004a8583 (patch) | |
tree | 10dc27abb1b9922cc81716915be90a0054397927 | |
parent | 56cf3841593733dafe0f84a0e8cbc16c3dc7250d (diff) | |
download | msgpack-python-ba8cf1c402fe68f283480c9abbf7707d004a8583.tar.gz |
fallback: _fb_consume: improve performance with pypy
-rw-r--r-- | msgpack/fallback.py | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/msgpack/fallback.py b/msgpack/fallback.py index 294a97e..0e0557f 100644 --- a/msgpack/fallback.py +++ b/msgpack/fallback.py @@ -202,12 +202,17 @@ class Unpacker(object): self._fb_buffers.append(next_bytes) def _fb_consume(self): - self._fb_buffers = self._fb_buffers[self._fb_buf_i:] + if self._fb_buf_i: + for i in xrange(self._fb_buf_i): + self._fb_buf_n -= len(self._fb_buffers[i]) + self._fb_buffers = self._fb_buffers[self._fb_buf_i:] + self._fb_buf_i = 0 if self._fb_buffers: self._fb_buffers[0] = self._fb_buffers[0][self._fb_buf_o:] + self._fb_buf_n -= self._fb_buf_o + else: + self._fb_buf_n = 0 self._fb_buf_o = 0 - self._fb_buf_i = 0 - self._fb_buf_n = sum(map(len, self._fb_buffers)) def _fb_got_extradata(self): if self._fb_buf_i != len(self._fb_buffers): |