[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