[Python-Dev] Possible optimization for LOAD_FAST ?

Georg Brandl g.brandl at gmx.net
Tue Dec 28 19:30:48 CET 2010


Am 28.12.2010 18:24, schrieb Benjamin Peterson:
> 2010/12/28 Lukas Lueg <lukas.lueg at googlemail.com>:
>> Consider the following code:
>>
>> def foobar(x):
>>    for i in range(5):
>>        x[i] = i
>>
>> The bytecode in python 2.7 is the following:
>>
>>  2           0 SETUP_LOOP              30 (to 33)
>>              3 LOAD_GLOBAL              0 (range)
>>              6 LOAD_CONST               1 (5)
>>              9 CALL_FUNCTION            1
>>             12 GET_ITER
>>        >>   13 FOR_ITER                16 (to 32)
>>             16 STORE_FAST               1 (i)
>>
>>  3          19 LOAD_FAST                1 (i)
>>             22 LOAD_FAST                0 (x)
>>             25 LOAD_FAST                1 (i)
>>             28 STORE_SUBSCR
>>             29 JUMP_ABSOLUTE           13
>>        >>   32 POP_BLOCK
>>        >>   33 LOAD_CONST               0 (None)
>>             36 RETURN_VALUE
>>
>> Can't we optimize the LOAD_FAST in lines 19 and 25 to a single load
>> and put the reference twice on the stack?
> 
> Yes. Would it be useful? Unlikely.

Is it tricky to get all the corner cases right? Very probably :)

Georg



More information about the Python-Dev mailing list