Concerns about performance w/Python, Pysco on Pentiums

Andrew Bennetts andrew-pythonlist at puzzling.org
Fri Mar 7 12:05:26 CET 2003


On Fri, Mar 07, 2003 at 11:26:38AM +0100, CezaryB wrote:
> On 3/6/03 8:35 PM, Peter Hansen wrote:
> 
> >    def step(self):
> 
> >        opcodeByte = self.readByte(self.PC)
> >        try:
> >            opcode = self.opcodes[opcodeByte]
> >        except KeyError:
> >            raise UnimplementedOpcode('$%02X %s' % (opcodeByte,
> >self.readMemory(self.PC + 1, 5)))
> >        else:
> >            deltaPC, self.effectiveAddress = 
> >            self.resolveAddress(opcode.mode)
> >            newPC = opcode.execute(self)
> >
> >            if newPC is not None:
> >                self.PC = newPC
> >            else:
> >                self.PC += deltaPC + opcode.length
> >
> >            self.cycles += opcode.cycles
> >   ...
> Inline "step" in your main loop, use local variables instead od self.PC, 
> self.opcodes self.resolveAddress. It should help Psyco.

Regarding inlining, I thought psyco would do it automatically?

Hmm, another thought... does this code use __slots__?  Do they make any
measureable difference to performance?  (I'm wondering if they improve
locality and memory footprint enough to have noticeable cache benefits)

-Andrew.






More information about the Python-list mailing list