From 7f695a00a9b05ff094fda54666aae690b5baf02c Mon Sep 17 00:00:00 2001 From: Olivier Guilyardi Date: Fri, 19 Feb 2010 12:42:11 +0000 Subject: [PATCH] avoid unnecessary copy operations in input adapter --- core.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/core.py b/core.py index bf13948..b4c3153 100644 --- a/core.py +++ b/core.py @@ -117,13 +117,20 @@ class FixedSizeInputAdapter(object): while remaining: space = self.buffer_size - self.len copylen = remaining < space and remaining or space - self.buffer[self.len:self.len + copylen] = frames[src_index:src_index + copylen] + src = frames[src_index:src_index + copylen] + if self.len == 0 and copylen == self.buffer_size: + # avoid unnecessary copy + buffer = src + else: + buffer = self.buffer + buffer[self.len:self.len + copylen] = src + remaining -= copylen src_index += copylen self.len += copylen if self.len == self.buffer_size: - yield self.buffer, (eod and not remaining) + yield buffer, (eod and not remaining) self.len = 0 if eod and self.len: -- 2.39.5