Python and the need for speed
python at lucidity.plus.com
Tue Apr 18 19:31:34 EDT 2017
On 19/04/17 00:08, Gregory Ewing wrote:
> Erik wrote:
>> When considering special-casing this opcode sequence, remember that
>> in-place operations can be performed on anonymous objects (i.e., those
>> referenced by a collection and not bound directly to a namespace):
> I think this means you would want multiple versions of the +=1 opcode:
> ADD_ONE_TO_NAME, ADD_ONE_TO_ITEM, ADD_ONE_TO_ATTR, etc. Essentially
> one for each variant of the STORE operation.
Yes, I get that ;) That's what I meant by a "set of opcodes" - some of
which know that there's an implicit ROT3 to do. Perhaps in some other
circumstances there's a ROT3 and another op before the STORE. Or perhaps
three other ops ...
I'm just pointing out that concentrating on folding a very specific
sequence of opcodes that you happen to see in your test code disassembly
does not necessarily scale well.
Why just INPLACE_ADD? For each variant of each type of STORE operation
(we know there are at least two), you also might want to have MULTIPLY,
SUBTRACT, DIVIDE, BIT_OR, BIT_AND, SHIFT_LEFT, SHIFT_RIGHT, EXP and
MODULO versions ... (have I forgotten any?)
More information about the Python-list