[Python-Dev] Re: [Bug #121013] Bug in <stringobject>.join(<unicodestring>)

Fredrik Lundh fredrik@effbot.org
Mon, 27 Nov 2000 22:41:17 +0100


Michael Hudson wrote:
> > Fredrik's PySequence_Fast_* APIs look interesting, BTW. Should be
> > used more often :-)
> 
> Yes.  But they're pretty new, aren't they?  I find them a bit
> unsatisfactory that it's not possible to hoist the type check out of
> the inner loop.

if you can figure out a way to do that with C macros,
I'd love to see it...

on the other hand, PySequence_Fast guarantees that the
returned object is either a list or a tuple, so you can easily
move the test outside the loop yourself:

    if (PyTuple_Check(seq))
        for (...)
            item = PyTuple_GET_ITEM(seq, i)
            ...
    else
        for (...)
            item = PyList_GET_ITEM(seq, i)
            ...

> Still, it seems my PII's branch predictor nails that one... (i.e. changing
> it so that it didn't check inside the loop made naff-all difference to the
> running time).

yeah, the type isn't likely to change inside the loop...

</F>