Mercurial > cpython-lru_cache-weakref
diff Objects/stringobject.c @ 34621:1edea4c2b011 legacy-trunk
* Beef-up tests for str.count().
* Speed-up str.count() by using memchr() to fly between first char matches.
| author | Raymond Hettinger <python@rcn.com> |
|---|---|
| date | Sun, 20 Feb 2005 09:54:53 +0000 |
| parents | 556f6f1056a8 |
| children | 27a718221e72 |
line wrap: on
line diff
--- a/Objects/stringobject.c Sun Feb 20 04:07:08 2005 +0000 +++ b/Objects/stringobject.c Sun Feb 20 09:54:53 2005 +0000 @@ -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\
