]> granicus.if.org Git - python/commitdiff
Fredrik Lundh <effbot@telia.com>:
authorFred Drake <fdrake@acm.org>
Tue, 20 Jun 2000 15:47:54 +0000 (15:47 +0000)
committerFred Drake <fdrake@acm.org>
Tue, 20 Jun 2000 15:47:54 +0000 (15:47 +0000)
Simplify find code; this is a performance improvement on at least some
platforms.

Objects/stringobject.c

index a254019cb8e49cc7edce2554861c1cabfe00b628..10b43e4d999ff430eb2579f934b83c093eb21df4 100644 (file)
@@ -651,7 +651,7 @@ string_split(self, args)
 
        i = j = 0;
        while (i+n <= len) {
-               if (s[i] == sub[0] && (n == 1 || memcmp(s+i, sub, n) == 0)) {
+               if (s[i] == sub[0] && memcmp(s+i, sub, n) == 0) {
                        if (maxsplit-- <= 0)
                                break;
                        item = PyString_FromStringAndSize(s+j, (int)(i-j));
@@ -852,8 +852,7 @@ string_find_internal(self, args, dir)
                        return (long)i;
                last -= n;
                for (; i <= last; ++i)
-                       if (s[i] == sub[0] &&
-                           (n == 1 || memcmp(&s[i+1], &sub[1], n-1) == 0))
+                       if (s[i] == sub[0] && memcmp(&s[i], sub, n) == 0)
                                return (long)i;
        }
        else {
@@ -862,8 +861,7 @@ string_find_internal(self, args, dir)
                if (n == 0 && i <= last)
                        return (long)last;
                for (j = last-n; j >= i; --j)
-                       if (s[j] == sub[0] &&
-                           (n == 1 || memcmp(&s[j+1], &sub[1], n-1) == 0))
+                       if (s[j] == sub[0] && memcmp(&s[j], sub, n) == 0)
                                return (long)j;
        }
        
@@ -1415,9 +1413,7 @@ mymemfind(mem, len, pat, pat_len)
        len -= pat_len;
 
        for (ii = 0; ii <= len; ii++) {
-               if (mem[ii] == pat[0] &&
-                   (pat_len == 1 ||
-                    memcmp(&mem[ii+1], &pat[1], pat_len-1) == 0)) {
+               if (mem[ii] == pat[0] && memcmp(&mem[ii], pat, pat_len) == 0) {
                        return ii;
                }
        }