
Guido van Rossum <guido@beopen.com>:
But the two-arg opcode format slows down the opcode decoding -- and that's the most time-critical part of all of ceval.c!
I don't see why that has to be so, as long as you don't try to pre-fetch the extra argument before switching on the opcode. Just leave it up to each branch of the switch to fetch another argument if needed.
Sure. That's not how the patch is currently implemented though -- it adds this to the main opcode decoding: if (HAS_2ARG(opcode)) oparg2 = NEXTARG();
In fact, why not do that for one-argument opcodes as well? If what you say is true, that should make argument decoding even faster than it is now!
Yes -- but also would cause about 30-40 copies of the same code (which could be a single macro call). This could easily be tested and timed though. --Guido van Rossum (home page: http://www.pythonlabs.com/~guido/)