ICU-880 faster loop for strcoll leading chars == comparison.

X-SVN-Rev: 4191
This commit is contained in:
Andy Heninger 2001-03-20 02:26:23 +00:00
parent de38f9f30f
commit 26d19f7d22

View File

@ -2731,21 +2731,21 @@ ucol_strcoll( const UCollator *coll,
const UChar *pSrcEnd = source + sourceLength;
const UChar *pTargEnd = target + targetLength;
int32_t equalLength = 0;
int32_t equalLength;
// Scan while the strings are bitwise ==, or until one is exhausted.
for (;;) {
if (pSrc == pSrcEnd || pTarg == pTargEnd)
break;
if (*pSrc != *pTarg)
break;
if (*pSrc == 0 && (sourceLength == -1 || targetLength == -1))
break;
equalLength++;
if (*pSrc != *pTarg)
break;
pSrc++;
pTarg++;
}
equalLength = pSrc - source;
// If we made it all the way through both strings, we are done. They are ==
if ((pSrc ==pSrcEnd || (pSrcEnd <pSrc && *pSrc==0)) && /* At end of src string, however it was specified. */
(pTarg==pTargEnd || (pTargEnd<pTarg && *pTarg==0))) /* and also at end of dest string */