[Python-Dev] proposal: core support for "fast" sequence iteration
Greg Stein
gstein@lyra.org
Sat, 17 Jun 2000 13:52:31 -0700
+1
coolness.
On Sat, Jun 17, 2000 at 05:44:58PM +0200, Fredrik Lundh wrote:
> mark wrote:
>
> > Its a fair bit of code to duplicate everywhere you want the speed increase.
> > How can we add a similar scheme to the core, so the changes people need to
> > make are trivial (to the point where the change is zero!)?
>
> okay, here's my current proposal:
>
> PyObject* PySequence_Fast(PyObject *o)
>
> Return value: New reference.
>
> Returns the o as a tuple or a list on success, and
> NULL on failure. If o doesn't have the right type,
> it is converted to a tuple using PySequence_Tuple.
>
> This is equivalent to the following Python code:
>
> if type(o) in (ListType, TupleType):
> return o
> return tuple(o)
>
> This function is intended to be used together with
> PySequence_Fast_GET_ITEM, for functions that need
> to loop over a read-only sequence as fast as they
> possibly can, while still supporting any object that
> implements the sequence protocol.
>
> PyObject* PySequence_Fast_GET_ITEM(PyObject *seq, int i)
>
> Return value: Borrowed reference.
>
> Returns the object at position i, from the sequence
> seq (which must be a list or a tuple). This is a
> macro, and has no error checking.
>
> If you need error checking, use PySequence_GetItem.
>
> for the rationale, see my earlier posts in the "list.extend" thread.
>
> unless somebody comes up with a more efficient solution, I'll wrap
> this up together with the list.extend patch (first thing tomorrow).
>
> </F>
>
>
> _______________________________________________
> Python-Dev mailing list
> Python-Dev@python.org
> http://www.python.org/mailman/listinfo/python-dev
--
Greg Stein, http://www.lyra.org/