[Python-Dev] lookdict

Guido van Rossum guido@beopen.com
Fri, 01 Sep 2000 17:04:48 -0500


> Right. I was too fast. There is some speedup due to the string
> specialization. I'll post a patch to SF with some more tweaks
> of this implementation. Briefly:
> 
> - do not call PyErr_Clear() systematically after PyObject_Compare();
>   only if (!error_restore && PyErr_Occurred())

What do you mean?  The lookdict code checked in already checks
PyErr_Occurrs().

> - defer variable initializations after common return cases
> - avoid using more vars in lookdict_string + specialize string_compare()
> - inline the most frequest case in PyDict_GetItem (the first item probe)

Cool.

> Hm. Question: is it possible for the thread state to swap during
> PyObject_Compare()? If it is possible, things are more complicated
> than I thought...

Doesn't matter -- it will always swap back.  It's tied to the
interpreter lock.

Now, for truly devious code dealing with the lock and thread state,
see the changes to _PyPclose() that Tim Peters just checked in...

--Guido van Rossum (home page: http://www.pythonlabs.com/~guido/)