Why not a Python compiler?

Steven D'Aprano steve at REMOVE-THIS-cybersource.com.au
Fri Feb 8 20:49:10 EST 2008


On Sat, 09 Feb 2008 01:11:09 +0000, Marc 'BlackJack' Rintsch wrote:

> On Fri, 08 Feb 2008 05:12:29 -0800, Ryszard Szopa wrote:
> 
>> Expressing simple loops as C for loops...
> 
> You mean simple loops like ``for i in xrange(1000):``?  How should the
> compiler know what object is bound to the name `xrange` when that loop
> is executed?

Assuming the aim is to optimize for speed rather than memory, the 
solution is for the compiler to create something like this pseudo-code:

if xrange is Python's built-in xrange:
    execute optimized for-loop at C-like speed
else:
    execute unoptimized normal loop at Python speed

(In case it's not obvious, the decision of which branch to take is made 
at run time, not compile time.)

This, naturally, assumes that the test of whether xrange is the built-in 
xrange is fast. If it is not, then the optimized code will actually be 
slower for small enough loops. But that's hardly unusual: no optimizing 
compiler guarantees to optimize code in every possible case.

I understand that is more or less what psycho already does.


-- 
Steven



More information about the Python-list mailing list