]> git.parisson.com Git - timeside.git/commitdiff
avoid unnecessary copy operations in input adapter
authorOlivier Guilyardi <olivier@samalyse.com>
Fri, 19 Feb 2010 12:42:11 +0000 (12:42 +0000)
committerOlivier Guilyardi <olivier@samalyse.com>
Fri, 19 Feb 2010 12:42:11 +0000 (12:42 +0000)
core.py

diff --git a/core.py b/core.py
index bf13948f7070f4c082dc3ba48966b4b2ecb61a75..b4c3153d1394a4094ceff05623db840770e77428 100644 (file)
--- 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: