Skip to content

Commit 4289ba0

Browse files
committed
Optimize ReplayBuffer.read_chars with cStringIO.
It turns our that cStringIO.write can build a string faster than str.join can.
1 parent 1ba3634 commit 4289ba0

File tree

1 file changed

+6
-1
lines changed

1 file changed

+6
-1
lines changed

sc2reader/utils.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,8 @@ def __init__(self, file):
7878
self.coord_convert = [(2**(12 - i),1.0/2**i) for i in range(1,13)]
7979

8080
self.read_basic = self.io.read
81+
self.char_buffer = cStringIO.StringIO()
82+
8183
'''
8284
Additional Properties
8385
'''
@@ -131,7 +133,10 @@ def read_chars(self, length=0):
131133
if self.bit_shift==0:
132134
return self.read_basic(length)
133135
else:
134-
return ''.join(chr(byte) for byte in self.read(length))
136+
self.char_buffer.truncate(0)
137+
for byte in self.read(length):
138+
self.char_buffer.write(chr(byte))
139+
return self.char_buffer.getvalue()
135140

136141
def read_hex(self, length=0):
137142
return self.read_chars(length).encode("hex")

0 commit comments

Comments
 (0)