python/dist/src/Objects stringobject.c, 2.228, 2.229
Update of /cvsroot/python/python/dist/src/Objects In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv22296/Objects Modified Files: stringobject.c Log Message: * Beef-up tests for str.count(). * Speed-up str.count() by using memchr() to fly between first char matches. Index: stringobject.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Objects/stringobject.c,v retrieving revision 2.228 retrieving revision 2.229 diff -u -d -r2.228 -r2.229 --- stringobject.c 20 Feb 2005 04:07:04 -0000 2.228 +++ stringobject.c 20 Feb 2005 09:54:52 -0000 2.229 @@ -2145,7 +2145,7 @@ static PyObject * string_count(PyStringObject *self, PyObject *args) { - const char *s = PyString_AS_STRING(self), *sub; + const char *s = PyString_AS_STRING(self), *sub, *t; int len = PyString_GET_SIZE(self), n; int i = 0, last = INT_MAX; int m, r; @@ -2186,11 +2186,16 @@ } else { i++; } + if (i >= m) + break; + t = memchr(s+i, sub[0], m-i); + if (t == NULL) + break; + i = t - s; } return PyInt_FromLong((long) r); } - PyDoc_STRVAR(swapcase__doc__, "S.swapcase() -> string\n\ \n\
participants (1)
-
rhettingerīŧ users.sourceforge.net