From: Guido van Rossum Date: Mon, 19 Aug 2002 16:02:33 +0000 (+0000) Subject: Simple but important optimization for descr_check(): instead of the X-Git-Tag: v2.3c1~4409 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c588e9041aea212fe2b5fad9254824d12f804c3e;p=python Simple but important optimization for descr_check(): instead of the expensive and overly general PyObject_IsInstance(), call PyObject_TypeCheck() which is a macro that often avoids a call, and if it does make a call, calls the much more efficient PyType_IsSubtype(). This saved 6% on a benchmark for slot lookups. --- diff --git a/Objects/descrobject.c b/Objects/descrobject.c index cbf9e16113..6daffc6175 100644 --- a/Objects/descrobject.c +++ b/Objects/descrobject.c @@ -65,7 +65,7 @@ descr_check(PyDescrObject *descr, PyObject *obj, PyTypeObject *type, *pres = (PyObject *)descr; return 1; } - if (!PyObject_IsInstance(obj, (PyObject *)(descr->d_type))) { + if (!PyObject_TypeCheck(obj, descr->d_type)) { PyErr_Format(PyExc_TypeError, "descriptor '%s' for '%s' objects " "doesn't apply to '%s' object",