Nerdeando no Python Brasil [6], alguém comentou que concatenação de strings é um caso que foi otimizado, e resolvemos testar. Não é que foi otimizado, mesmo?
concatena.py:
s = ''
for a in range(1000000):
s += 'a'
lista.py:
s = ''
lista = []
for a in range(1000000):
lista.append('a')
s = ''.join(lista)
python -V
Python 2.6.1
time python lista.py ; time python concatena.py
real 0m0.298s
user 0m0.248s
sys 0m0.046s
real 0m0.292s
user 0m0.250s
sys 0m0.039s
Melhor do que o “fix” anterior, que era chamar de idiota quem não usasse join