[Python-Dev] new bytecode results
M.-A. Lemburg
mal@lemburg.com
Fri, 28 Feb 2003 09:41:29 +0100
Andrew McNamara wrote:
>>The general problem with the ceval switch statement is that it
>>is too big. Adding new opcodes will only make it bigger, so I doubt
>>that much can be gained in general by trying to come up with new
>>do-everything-in-one-opcode cases.
>
> [...]
>
>>The last point is probably compiler dependent. GCC has the tendency
>>to use the same layout for the assembler code as you use in the
>>C source code, so placing often used code close to the top
>>results in better locality (at least on my machines).
>
> My experience with gcc (on x86) is that it uses a lookup table
> for contiguous switch statements rather than a long chain of
> compares/branches. A quick look at the assembler output from ceval.c
> suggests it's using a lookup table.
Right, but the code for the case implementations itself is
ordered (more or less) in the order you use in the C file. At
least that was the case at the time (which must have been GCC
2.95.x or even earlier).
> What architecture did you observe
> this on?
Linux.
--
Marc-Andre Lemburg
eGenix.com
Professional Python Software directly from the Source (#1, Feb 28 2003)
>>> Python/Zope Products & Consulting ... http://www.egenix.com/
>>> mxODBC, mxDateTime, mxTextTools ... http://python.egenix.com/
________________________________________________________________________
Python UK 2003, Oxford: 32 days left
EuroPython 2003, Charleroi, Belgium: 116 days left