]> granicus.if.org Git - python/commit
Rehabilitated the fast-path richcmp code, and sped it up. It wasn't
authorTim Peters <tim.peters@gmail.com>
Sun, 4 Nov 2001 07:29:31 +0000 (07:29 +0000)
committerTim Peters <tim.peters@gmail.com>
Sun, 4 Nov 2001 07:29:31 +0000 (07:29 +0000)
commit67754e993ea681dcdd6d13e396411524922ba89a
tree7827ba2d331fe6d106b8f56bb32a011f4f7cf302
parent9930061ce28b1fc60d267ae3474c74a41e655cd5
Rehabilitated the fast-path richcmp code, and sped it up.  It wasn't
helping for types that defined tp_richcmp but not tp_compare, although
that's when it's most valuable, and strings moved into that category
since the fast path was first introduced.  Now it helps for same-type
non-Instance objects that define rich or 3-way compares.

For all the edits here, the rest just amounts to moving the fast path from
do_richcmp into PyObject_RichCompare, saving a layer of function call
(measurable on my box!).  This loses when NESTING_LIMIT is exceeded, but I
don't care about that (fast-paths are for normal cases, not pathologies).

Also added a tasteful <wink> label to get out of PyObject_RichCompare, as
the if/else nesting in this routine was getting incomprehensible.
Objects/object.c