Anton Dovjenko:
En un programa de Python que se ejecuta un for
bucle sobre un fijo range
muchas veces, por ejemplo,
while some_clause:
for i in range(0, 1000)
pass
...
¿Tiene sentido de caché range
:
r = range(0, 1000)
while some_clause:
for i in r
pass
...
o será que no añadir mucho beneficio?
xkcdjerry:
No lo hará, una range
llamada no hace casi nada, sólo el iter
ing es costful, pero no se puede ir por eso.
(Una cosa rara es que el almacenamiento en caché hace que sea más lenta por alguna razón)
Mis puntos de referencia:
>>> timeit.timeit("""
for i in range(10000):
pass""",number=10000)
1.7728144999991855
>>> timeit.timeit("""
for i in r:
pass""","r=range(10000)",number=10000)
1.80037959999936
Y el almacenamiento en caché se rompe la legibilidad, como el Zen de Python afirma:
Readability counts.
y
Explicit is better than implicit.
Simple is better than complex.
Editar:
En Python 2.x, el almacenamiento en caché ayuda porque range
devuelve una lista, pero en ese momento que también podría utilizar xrange
(que es la misma que range
en 3.x pitón)