[Python-es] Eficiencia de las listas

Asdrúbal Iván Suárez Rivera asdrubal.ivan.suarez.rivera en gmail.com
Mie Ago 7 04:05:17 CEST 2013


Saludos gente, sería interesante probar con blist[0]. A primera vista
pareciera bastante rápida.

[0] https://pypi.python.org/pypi/blist/


El 6 de agosto de 2013 10:08, Daπid <davidmenhur en gmail.com> escribió:

> 2013/8/6 Chema Cortes <pych3m4 en gmail.com>:
> > Interesante caso usando numpy y numba. Pero el problema que veo es que
> > la función flipper no debería tener fijados los parámetros de corte,
> > lo que supongo que hará perder bastante eficacia al JIT de numba.
>
> En absoluto. Pasando i y j como argumentos a la función, se tienen los
> mismos tiempos. Numba es más eficiente cuantos más números se estén
> cambiando:
>
>
> In [17]: %timeit flipper(l,10**2, 10**3)
> 100000 loops, best of 3: 6.14 us per loop
>
> In [18]: %timeit nflipper(l,10**2, 10**3)
> 100000 loops, best of 3: 5.8 us per loop
>
> In [19]: %timeit flipper(l,10**3, 10**5)
> 1000 loops, best of 3: 351 us per loop
>
> In [20]: %timeit nflipper(l,10**3, 10**5)
> 10000 loops, best of 3: 119 us per loop
>
>
> He vuelto a medir los tiempos de NumPy sin función y ahora sí obtengo
> resultados razonables:
>
> In [26]: %timeit l[i+1:j+1]=l[j:i:-1]
> 1000 loops, best of 3: 351 us per loop
>
> (i y j son 10**3, 5 respectivamente).
>
>
> Por completitud, usando la lista L=list(l)
>
> In [29]: %timeit L[i+1:j+1]=L[j:i:-1]
> 100 loops, best of 3: 6.77 ms per loop
>
>
> Por otro lado, si la operación de inversión no se hace sobre el array,
> sino sobre una copia, se gana tiempo:
>
> In [31]: l2 = l.copy()
>
> In [32]: %timeit l[i+1:j+1]=l2[j:i:-1]
> 10000 loops, best of 3: 101 us per loop
>
>
> Pero claro, no estamos teniendo en cuenta la copia de l2 (15 ms)
> (quizá útil si se va a repetir el mismo proceso sobre muchas secciones
> no solapantes del array).
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> http://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>



-- 
Asdrúbal Iván Suárez Rivera

*Si quieres aprender, enseña. *Marco Tulio Cicerón.
*
*
*¿Tienes twitter?*
*Sígueme: @asdrubalivan*
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20130806/1103f7df/attachment.html>


Más información sobre la lista de distribución Python-es