On Tue, Jan 4, 2011 at 2:15 PM, Daniel Stutzbach email@example.com wrote:
On Tue, Jan 4, 2011 at 9:33 AM, Lukas Lueg firstname.lastname@example.org wrote: >
The keys are immutable anyway so the instances of PyDict could manage a opaque value (in fact, a counter) that changes every time a new value is written to any key. Once we get a reference out of the dict, we can can do very fast lookups by passing the key, the reference we know from the last lookup and our last state. The lookup returns a new reference and the new state. If the dict has not changed, the state doesnt change and the reference is simply taken from the passed value passed to the lookup. That way the code remains the same no matter if the dict has changed or not.
I have had similar ideas in the past but have never found time to explore them. The same mechanism could also be used to speed up attribute access on objects.
Check out the various approaches in PEP 266, PEP 267, and PEP 280.
-- --Guido van Rossum (python.org/~guido)