[Python-Dev] optimizing non-local object access
Skip Montanaro
skip@pobox.com (Skip Montanaro)
Thu, 9 Aug 2001 13:05:28 -0500
Jeremy> Imagine we didn't special case ints in BINARY_ADD. If you're
Jeremy> doing mostly string addition, it's just slowing you down anyway
Jeremy> :-). Instead, a function that expected to see ints would check
Jeremy> the types of the relevant args.
Jeremy> def f(x):
Jeremy> return 2*x
Jeremy> would become something like:
Jeremy> def f(x):
Jeremy> if isinstance(x, int):
Jeremy> return 2 * x_as_int
Jeremy> else:
Jeremy> return 2 * x
Jeremy> where the int branch could use opcodes that knew that x was an
Jeremy> integer and could call its __add__ method directly.
Yeah, but all you've really done is extract the current inline test for int
arguments into a few more PyVM instructions. You've sacrificed a fairly
fast special case test for more passes around the interpreter loop. I'm not
sure how this can be a win in the current virtual machine.
Skip