[Python-Dev] Wild Idea for the Year
Raymond Hettinger
python at rcn.com
Wed Jun 23 13:52:35 EDT 2004
> Your idea adds some extra (constant)
> time to all string ops, and quite a bit of complexity.
It adds a single if NULL check to each op (about the same cost as
PyString_Check).
Complexity (recursive joining) is confined to a single function.
Meanwhile, the code for str.__add__() becomes simpler. That's basically
the whole show.
> There are lots
> of places where knowledge of string internals is assumed, including
> 3rd party code using a few macros, all of which would have to be
> fixed.
Then save it for Py3.0, or not. The idea is to make things easier for
the python programmer, beginner or pro. With little effort on the C
side, there is an opportunity to be the first dynamic language with O(n)
behavior for serial string concatenations -- one less thing to teach,
one step towards scalability.
> But wait, I think it won't fly at all unless you make ob_sval a
> pointer to separately allocated memory. Otherwise, how could
> _autojoin() possibly "fix" the string without allocating the memory
> for it?
PyString_Resize().
BTW, there is a proof-of-concept demo patch with UserString at:
www.python.org/sf/976162
Also, there is an alternative approach of having str.__add__() return a
string proxy. This would avoid issues with 3rd party code.
That being said, I didn't miss that you hate the idea, so I'll craft a
recipe and drop it :-(
Raymond
More information about the Python-Dev
mailing list