List comprehensions much faster after unrolling
Created originally on Bitbucket by silvioricardoc (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):
#!python 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?