[Python-Dev] Rich Comparison from "C" API?

David Abrahams David Abrahams" <david.abrahams@rcn.com
Wed, 12 Jun 2002 11:48:27 -0400


From: "Tim Peters" <tim.one@comcast.net>

> 1. You really want PyObject_RichCompareBool in your example, not
>    PyObject_RichCompare.  The former is much more efficient in some
>    cases (e.g., a total ordering on dicts is much hairer to determine
>    than just equality).

Now you're really pulling my leg. PyObject_RichCompareBool is just:

/* Return -1 if error; 1 if v op w; 0 if not (v op w). */
int
PyObject_RichCompareBool(PyObject *v, PyObject *w, int op)
{
 PyObject *res = PyObject_RichCompare(v, w, op);
 int ok;

 if (res == NULL)
  return -1;
 ok = PyObject_IsTrue(res);
 Py_DECREF(res);
 return ok;
}


How can that be more efficient that PyObject_RichCompare?