[pyar] i+=1 vs i=i+1

Alejandro Santos listas en alejolp.com
Mie Mayo 9 02:55:29 ART 2012


2012/5/4 Claudio Freire <klaussfreire en gmail.com>:
> On Fri, May 4, 2012 at 7:55 PM, Facundo Batista
> <facundobatista en gmail.com> wrote:
>>> CPython optimiza el caso:
>>>
>>> buf = ""
>>> buf += ...
>>> buf += ...
>>> for bla in bla:
>>>   buf += blah
>>> ETc
>>
>> ¿En qué sentido lo optimiza?
>
> Convierte:
>
> buf = algo
> buf += otro
>
> A:
>
> buf = PyString_FromString(algo)
> buf_len = PyString_Length(buf)
> otro_len = PyString_Length(otro)
> PyString_Resize(&buf, buf_len+otro_len)
> memcpy(PyString_AS_STRING(buf) + buf_len, PyString_AS_STRING(otro), otro_len)
>

Está bien que haga esto, pero solo lo puede hacer cuando el refcount
de "algo" es == 1.

-- 
Alejandro Santos



More information about the pyar mailing list