¿Vale la pena el almacenamiento en caché gama de Python (inicio, parada, paso)?

Anton Dovjenko:

En un programa de Python que se ejecuta un forbucle sobre un fijo rangemuchas 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 rangellamada no hace casi nada, sólo el itering 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 rangedevuelve una lista, pero en ese momento que también podría utilizar xrange(que es la misma que rangeen 3.x pitón)

Supongo que te gusta

Origin http://10.200.1.11:23101/article/api/json?id=386591&siteId=1
Recomendado
Clasificación