読者です 読者をやめる 読者になる 読者になる

StringIOの文字列の連結について(python2.6)

StringIOを読んでいるとわざわざ文字列連結のためにself.buflistというリストを用意して、joinして文字列を連結させています。ところが、こんなのself.bufと+演算子だけでできてしまいます。考えられるのは、リストを生成して、joinする方が速いということです。というわけで、時間を測ってみました。

import time
s = 'hello'
t = time.time()
s3 = ''
for i in range(0, 1000000):
  s3 += s
t = time.time() - t
print '%.3f[sec]' %(t)
t = time.time()
l = []
for i in range(0, 1000000):
  l.append(s)
if l:
  s2 = ''.join(l)
t = time.time() - t
print '%.3f[sec]' %(t)
assert(s2 == s3)

結果としては、少しだけjoinの方が速かったですが、気にするほどのことでもない気がします。


1.410[sec]# +演算子
1.393[sec]# join