[Python-Dev] Rich comparisons [Was] redefining is (original) (raw)
Raymond Hettinger python at rcn.com
Fri Mar 19 01:21:09 EST 2004
- Previous message: [Python-Dev] redefining is
- Next message: [Python-Dev] Rich comparisons
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
[Guido] > (The best scheme is probably to use intern() but still use '==' for > comparisons; '==' is smart enough to skip comparing an object to > itself.)
[Tim]
Well, stringrichcompare() takes that shortcut, so the advice is good, but PyObjectRichCompare() doesn't in general (PyObjectCompare() still does, but that's not triggered by '==').
Hey, hey, this may be part of the answer to why my timings for equality testing using rich comparisions run so much slower than they do with PyObject_Compare().
Fixing this would entail a change in semantics but would be worth it if we can all agree to it. Essentially, I would like to insert the following lines into PyObject_RichCompare():
if (v == w) {
if (op == Py_EQ)
Py_RETURN_TRUE;
else if (op == Py_NE)
Py_RETURN_FALSE;
}
The test suite runs fine, but it is possible that some existing class defines equality in a way that sometimes returns False even when given two identical objects.
I think the change is worth it -- tests for equality are ubiquitous (and somewhat common) throughout the source.
Raymond
- Previous message: [Python-Dev] redefining is
- Next message: [Python-Dev] Rich comparisons
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]