diff options
author | Lars Wirzenius <liw@liw.fi> | 2015-03-27 20:23:54 +0200 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2015-03-27 20:23:54 +0200 |
commit | a3c9ca7069e56e1726a3095a465cd46f3b2ba3d8 (patch) | |
tree | f3d7737a8def66f480c8c7665a83a572ad00b91a | |
parent | 73bb7a23a4b3c488d494fc3c2b8d9b5e84020669 (diff) | |
download | genbackupdata-a3c9ca7069e56e1726a3095a465cd46f3b2ba3d8.tar.gz |
Reduce unnecessary string catenations
-rw-r--r-- | genbackupdatalib/generator.py | 17 |
1 files 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 |