Skip to content

Commit 7ff919d

Browse files
committed
Micro-optimize ReadBuffer.redirect_messages()
1 parent 6329091 commit 7ff919d

File tree

1 file changed

+7
-4
lines changed

1 file changed

+7
-4
lines changed

buffer.pyx

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -595,19 +595,22 @@ cdef class ReadBuffer:
595595
else:
596596
buf.write_bytes(self.consume_message())
597597

598-
# Fast path: exhaust buf0 as efficiently as possible
598+
# Fast path: exhaust buf0 as efficiently as possible.
599599
self._ensure_first_buf()
600600
if self._pos0 + 5 <= self._len0:
601601
cbuf = cpython.PyBytes_AS_STRING(self._buf0)
602602
new_pos0 = self._pos0
603+
cbuf_len = self._len0
603604

604605
done = 0
605-
while new_pos0 + 5 <= self._len0:
606+
# Scan the first buffer and find the position of the
607+
# end of the last "mtype" message.
608+
while new_pos0 + 5 <= cbuf_len:
606609
if (cbuf + new_pos0)[0] != mtype:
607610
done = 1
608611
break
609612
msg_len = hton.unpack_int32(cbuf + new_pos0 + 1) + 1
610-
if new_pos0 + msg_len > self._len0:
613+
if new_pos0 + msg_len > cbuf_len:
611614
break
612615
new_pos0 += msg_len
613616

@@ -630,7 +633,7 @@ cdef class ReadBuffer:
630633
# The next message is of a different type.
631634
return
632635

633-
# Back to slow path
636+
# Back to slow path.
634637
if not self.take_message_type(mtype):
635638
return
636639

0 commit comments

Comments
 (0)