El día 7 de agosto de 2013 04:05, Asdrúbal Iván Suárez Rivera
<asdrubal.ivan.suarez.riv...@gmail.com> escribió:
> Saludos gente, sería interesante probar con blist[0]. A primera vista
> pareciera bastante rápida.
>
> [0] https://pypi.python.org/pypi/blist/

Tiene buena pinta, aunque la he probado y no mejora mi caso
particular. Mejora el tema de trocear listas grandes, parece que no lo
hace tan bien cuando se trata de invertir listas. Supongo que es
debido a tener que mantener el B+tree actualizado.

Pongo tiempos con blist, ndarray y list, respectivamente:

%timeit b[i+1:j+1]=b[j:i:-1]
1 loops, best of 3: 144 ms per loop

%timeit l[i+1:j+1]=l[j:i:-1]
100 loops, best of 3: 10.5 ms per loop

%timeit L[i+1:j+1]=L[j:i:-1]
10 loops, best of 3: 53.8 ms per loop

Si miramos sólo la inversión, (ndarray no tiene inversión "in-place"):

%timeit b.reverse()
100 loops, best of 3: 9.04 ms per loop

%timeit L.reverse()
100 loops, best of 3: 5.76 ms per loop

Para otras operaciones, blist funciona algo mejor:

%timeit -n100 del b[1000:10002]
100 loops, best of 3: 1.54 ms per loop

%timeit -n100 del L[1000:10002]
100 loops, best of 3: 2.13 ms per loop


-- 
Hyperreals *R  "Quarks, bits y otras criaturas infinitesimales":
http://ch3m4.org/blog
Buscador Python Hispano: http://ch3m4.org/python-es
_______________________________________________
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/

Responder a