Match beginning of two strings

Andrew Dalke adalke at mindspring.com
Sun Aug 3 02:22:46 EDT 2003


Ravi:
> Read in both strings.
> Check to see if the first character matches.
> If yes:
>      Check halfway through the string and see if that character matches
>      Repeatedly check halfway until the difference point is found.
>      Go back through from the difference point backwards and make sure
> the characters match from the start to the difference point.
>
> I timed it, and it seems to be doing about 3.5usec per loop.

There's a lot of overhead for doing that.  Have you tried the simple

char *s1 = ... the first string ..
char *s2 = ... the second string ..
n = ... the shorter of the two ..
for(i=0; i<n; i++) {
  if (*s1++ != *s2++) {
    break;
  }
}
return ... the string s1[:n] (or even just the int)

Easy to understand, and the CPU is spending almost its whole
time doing character tests.

                    Andrew
                    dalke at dalkescientific.com






More information about the Python-list mailing list