[pyar] xrange (2.7) vs range(3.2)

Daniel dmlistapython en gmail.com
Jue Mayo 29 16:35:46 ART 2014


El 29 de mayo de 2014, 16:29, Facundo Batista <facundobatista en gmail.com>
escribió:

> 2014-05-29 16:50 GMT+02:00 Claudio Omar Melendrez Baeza
> <claudio.melendrez en gmail.com>:
>
> > Python2 tiene range y xrange, donde el segundo es un generador. Python3
> > tiene solo range, que es un generador (equivalente al xrange de py2). La
> > comparacion en este caso es xrange de Py2 vs. range de Py3. En distintas
> > versiones de Python.
> >
> > Ahora respondiendo la pregunta de Daniel: calculo que sera el interprete
> > (CPython), que debe estar mas optimizado para Py2. Creo que hasta que
> Py3 no
> > llegue a un nivel de adopcion aceptable (nunca?) no se van a preocupar
> > demasiado por la performance...
>
> ¡Es que no son lo mismo!
>
> Sí, son equivalentes, pero la versión de Py3 es más poderosa. Con
> algún costo en performance [0], se ve.
>
> Ejemplos donde se nota que el nuevo range es mejor que el viejo xrange:
>
> Py2:
> >>> r = xrange(300)
> >>> r
> xrange(300)
> >>> r[::3]
> Traceback (most recent call last):
>   File "<stdin>", line 1, in <module>
> TypeError: sequence index must be integer, not 'slice'
>
> Py3:
> >>> r = range(300)
> >>> r
> range(0, 300)
> >>> r[::3]
> range(0, 300, 3)
> >>> _[:5]
> range(0, 15, 3)
> >>> list(_)
> [0, 3, 6, 9, 12]
>
> O, directamente:
>
> Py2
> >>> xrange(3000000000)
> Traceback (most recent call last):
>   File "<stdin>", line 1, in <module>
> OverflowError: Python int too large to convert to C long
>
> Py3
> >>> range(3000000000)
> range(0, 3000000000)
>
> Slds.
>
> [0] Por otro lado, ¿cuanto sentido tiene medir la performance de un
> "for i in range(N): pass", ¿es algo que hacés mucho en tu código?
>
> --

Si, ya se ha "editado" esta discusión, pero lo que me sorprendió
es que ámbos códigos hacen nada, porque py3 es mas lento haciendo nada
que py2 :)
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20140529/f52dc5e6/attachment.html>


More information about the pyar mailing list