[Python-checkins] python/dist/src/Objects listobject.c,2.134,2.135

rhettinger@users.sourceforge.net rhettinger@users.sourceforge.net
Thu, 05 Sep 2002 07:23:52 -0700


Update of /cvsroot/python/python/dist/src/Objects
In directory usw-pr-cvs1:/tmp/cvs-serv21947

Modified Files:
	listobject.c 
Log Message:
Micro-optimization for list_contains.  Factored double if test 
out of the loop.


Index: listobject.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Objects/listobject.c,v
retrieving revision 2.134
retrieving revision 2.135
diff -C2 -d -r2.134 -r2.135
*** listobject.c	10 Aug 2002 05:21:15 -0000	2.134
--- listobject.c	5 Sep 2002 14:23:49 -0000	2.135
***************
*** 321,334 ****
  list_contains(PyListObject *a, PyObject *el)
  {
! 	int i;
  
! 	for (i = 0; i < a->ob_size; ++i) {
! 		int cmp = PyObject_RichCompareBool(el, PyList_GET_ITEM(a, i),
  						   Py_EQ);
! 		if (cmp > 0)
! 			return 1;
! 		else if (cmp < 0)
! 			return -1;
! 	}
  	return 0;
  }
--- 321,333 ----
  list_contains(PyListObject *a, PyObject *el)
  {
! 	int i, cmp;
  
! 	for (i = 0, cmp = 0 ; cmp == 0 && i < a->ob_size; ++i)
! 		cmp = PyObject_RichCompareBool(el, PyList_GET_ITEM(a, i),
  						   Py_EQ);
! 	if (cmp > 0)
! 		return 1;
! 	if (cmp < 0)
! 		return -1;
  	return 0;
  }