[Python-checkins] python/dist/src/Python bltinmodule.c,2.305,2.306

rhettinger at users.sourceforge.net rhettinger at users.sourceforge.net
Sun Jan 4 03:54:46 EST 2004


Update of /cvsroot/python/python/dist/src/Python
In directory sc8-pr-cvs1:/tmp/cvs-serv21864

Modified Files:
	bltinmodule.c 
Log Message:
Apply map/zip pre-sizing optimization to a broader class of objects. 
Formerly, the length was only fetched from sequence objects. 
Now, any object that reports its length can benefit from pre-sizing.



Index: bltinmodule.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Python/bltinmodule.c,v
retrieving revision 2.305
retrieving revision 2.306
diff -C2 -d -r2.305 -r2.306
*** bltinmodule.c	17 Dec 2003 20:43:33 -0000	2.305
--- bltinmodule.c	4 Jan 2004 08:54:44 -0000	2.306
***************
*** 792,806 ****
  
  		/* Update len. */
! 		curlen = -1;  /* unknown */
! 		if (PySequence_Check(curseq) &&
! 		    curseq->ob_type->tp_as_sequence->sq_length) {
! 			curlen = PySequence_Size(curseq);
! 			if (curlen < 0)
! 				PyErr_Clear();
! 		}
! 		if (curlen < 0)
  			curlen = 8;  /* arbitrary */
! 			if (curlen > len)
! 				len = curlen;
  	}
  
--- 792,802 ----
  
  		/* Update len. */
! 		curlen = PyObject_Size(curseq);
! 		if (curlen < 0) {
! 			PyErr_Clear();
  			curlen = 8;  /* arbitrary */
! 		}
! 		if (curlen > len)
! 			len = curlen;
  	}
  
***************
*** 1969,1973 ****
  	for (i = 0; i < itemsize; ++i) {
  		PyObject *item = PyTuple_GET_ITEM(args, i);
! 		int thislen = PySequence_Length(item);
  		if (thislen < 0) {
  			PyErr_Clear();
--- 1965,1969 ----
  	for (i = 0; i < itemsize; ++i) {
  		PyObject *item = PyTuple_GET_ITEM(args, i);
! 		int thislen = PyObject_Size(item);
  		if (thislen < 0) {
  			PyErr_Clear();





More information about the Python-checkins mailing list