[Cython] None checks for variables of builtin types (rev ffeb158969e)
Stefan Behnel
stefan_ml at behnel.de
Fri Feb 27 09:18:09 CET 2009
Robert Bradshaw wrote:
> On Feb 26, 2009, at 11:41 PM, Stefan Behnel wrote:
>> I'd like to also optimise negative indices (at least -1 is extremely
>> common),
>> that'll definitely make the List/Tuple functions too long for their minor
>> differences.
>
> Good idea, doing that right now.
What about this? I checked the assembly, and it looks not too bloated to me.
Stefan
static INLINE PyObject *__Pyx_GetItemInt_%(type)s(PyObject *o, Py_ssize_t
i, int is_unsigned) {
if (likely(o != Py_None)) {
if (likely((i < Py%(type)s_GET_SIZE(o)) &
(i >= -Py%(type)s_GET_SIZE(o)))) {
if (unlikely(i < 0))
i = Py%(type)s_GET_SIZE(o) + i;
PyObject *r = Py%(type)s_GET_ITEM(o, i);
Py_INCREF(r);
return r;
}
}
return __Pyx_GetItemInt_Generic(o, i, is_unsigned);
}
More information about the Cython-dev
mailing list