[issue24138] Speed up range() by caching and modifying long objects

Serhiy Storchaka report at bugs.python.org
Wed May 6 19:37:23 CEST 2015


Serhiy Storchaka added the comment:

Here is a patch that adds a free list for 1-digit long objects.

$ ./python -m timeit -s "r = range(10**3)" -- "for i in r: pass"
Unpatched: 10000 loops, best of 3: 54.4 usec per loop
With free list: 10000 loops, best of 3: 38 usec per loop
With hacked range: 10000 loops, best of 3: 34.5 usec per loop
Python 2.7: 10000 loops, best of 3: 37.1 usec per loop

$ ./python -m timeit -s "r = list(range(10**3))" -- "for i in r: pass"
10000 loops, best of 3: 30.7 usec per loop

In Python 2.7:
$ ./python -m timeit -s "r = xrange(10**3)" -- "for i in r: pass"
10000 loops, best of 3: 41.4 usec per loop
$ ./python -m timeit -s "r = range(10**3)" -- "for i in r: pass"
10000 loops, best of 3: 37.1 usec per loop

----------

_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue24138>
_______________________________________


More information about the Python-bugs-list mailing list