From a3c9ca7069e56e1726a3095a465cd46f3b2ba3d8 Mon Sep 17 00:00:00 2001 From: Lars Wirzenius Date: Fri, 27 Mar 2015 20:23:54 +0200 Subject: Reduce unnecessary string catenations --- genbackupdatalib/generator.py | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/genbackupdatalib/generator.py b/genbackupdatalib/generator.py index 227b6a4..9e3dea2 100644 --- a/genbackupdatalib/generator.py +++ b/genbackupdatalib/generator.py @@ -28,17 +28,22 @@ class DataGenerator(object): def __init__(self, seed): key = struct.pack('!Q', seed) self._arc4 = Crypto.Cipher.ARC4.new(key) - self._buffer = '' + self._buffer = [] + self._buffer_length = 0 def generate(self, size): - while len(self._buffer) < size: - self._buffer += self._generate_junk() + while self._buffer_length < size: + self._generate_junk() return self._split_off_data(size) def _generate_junk(self): - return self._arc4.encrypt(self._data) + junk = self._arc4.encrypt(self._data) + self._buffer.append(junk) + self._buffer_length += len(junk) def _split_off_data(self, size): - data = self._buffer[:size] - self._buffer = self._buffer[size:] + self._buffer = [''.join(self._buffer)] + data = self._buffer[0][:size] + self._buffer[0] = self._buffer[0][size:] + self._buffer_length -= len(data) return data -- cgit v1.2.1