[Python-Dev] Accessing globals without dict lookup
Jason Orendorff
jason@jorendorff.com
Fri, 8 Feb 2002 22:09:59 -0600
Guido van Rossum wrote:
> - Let a cell be a really simple PyObject, containing a PyObject
> pointer and a cell pointer. Both pointers may be NULL. (It may
> have to be called PyGlobalCell since I believe there's already a
> PyCell object.) (Maybe it doesn't even have to be an object -- it
> could just be a tiny struct.)
>
> - Let a celldict be a mapping that is implemented using a dict of
> cells. When you use its getitem method, the PyObject * in the cell
> is dereferenced, and if a NULL is found, getitem raises KeyError
> even if the cell exists. Using setitem to add a new value creates a
> new cell and stores the value there; using setitem to change the
> value for an existing key stores the value in the existing cell for
> that key. There's a separate API to access the cells.
The following is totally unimportant, but I feel compelled to share:
I implemented this once, long ago, for Python 1.5-ish, I believe. I got
it to the point where it was only 15% slower than ordinary Python, then
abandoned it. ;) In my implementation, "cells" were real first-class
objects, and "celldict" was a copy-and-hack version of dictionary. I
forget how the rest worked.
Anyway, this is all very exciting to me. :)
## Jason Orendorff http://www.jorendorff.com/