Message 85826 - Python tracker (original) (raw)

Inlining code saves work but breaks the effort to minimize the number of functions that have direct access to the underlying data structure.

The performance of setdefault() is hard to improve in real apps because the cost of instantiating the default object is outside of the method. Also, the method often gets used in a loop where the first call adds an entry and subsequent calls just do a get; so, any efforts to optimize the second look-up only help on the first call and are completely wasted on subsequent calls.

All that being said, there's no reason we can't save the double call to PyObject_Hash(). See attached patch.

Martin, any thoughts?