A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://mail.python.org/pipermail/python-dev/2006-March/062030.html below:

[Python-Dev] Faster list comprehensions

[Python-Dev] Faster list comprehensionsCollin Winter collinw at gmail.com
Fri Mar 3 13:58:03 CET 2006
Hello all,

I've just posted a patch to SF (python.org/sf/1442442) that I thought
I'd bring to everyone's attention. Executive summary: by changing the
behaviour of the unused LIST_APPEND opcode, it's possible to get a 16%
speed boost for list comprehensions.

Currently, list comprehensions are built up by calling a bound method
on the storage list. This is pretty inefficient, as it requires extra
stack manipulation and a function call for each element in the final
list. My patch takes the LIST_APPEND opcode (which existed in the eval
loop but not the compiler) and changes its behaviour; rather than take
its list argument off the stack, it takes a stack offset, allowing it
to leave the list object in place. This also replaces the slow Python
function call with a fast call directly to PyList_Append. In total,
this results in a 16% speed improvement [1].

[1] Benchmarking was done by taking the list comprehension examples in
Lib/test/test_grammar.py and running them in a loop a few thousand
times. Python revision 42780 took 1.69 seconds to run the examples
10000 times; the updated version takes 1.41 seconds.

Thanks,
Collin Winter
More information about the Python-Dev mailing list

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4