[pypy-issue] Issue #2231: List comprehensions much faster after unrolling (pypy/pypy)

Silvio Ricardo Cordeiro issues-reply at bitbucket.org
Fri Jan 29 13:04:05 EST 2016

New issue 2231: List comprehensions much faster after unrolling

Silvio Ricardo Cordeiro:

The following code is much faster after unrolling the list comprehension (commenting out the first my_list line and using the second one instead):

indexes = range(5)
def get(i): return 42

for i in range(100*1000*1000):
    my_list = [get(i) for i in indexes]  # list-compr
    #my_list = [get(0), get(1), get(2), get(3), get(4)]   # unrolled

On my local machine:

Interpreter         list-compr     unrolled      unrolled-with-append
PyPy 2 (v2.2.1)        7.8s          1.8s               2.9s
PyPy 2 (v4.0.1)        6.2s          1.1s               1.9s
PyPy 3 (v2.4.0)       11.3s          1.8s               2.9s

(The table also show results for unrolling using append instead of creating the list in a single statement).

Are there any plans on improving list comprehensions, or is there any limitation I'm not aware of?

More information about the pypy-issue mailing list