This optimisation technique results in non insignificant speed boost on some old x86 architectures. Novadays, we should rely on compiler optimisation.
This commit is contained in:
parent
81325b5059
commit
2d99881240
@ -11,21 +11,6 @@ sxu32 SyBinHash(const void *pSrc, sxu32 nLen) {
|
||||
}
|
||||
nH = nH * 33 + zIn[0] ;
|
||||
zIn++;
|
||||
if(zIn >= zEnd) {
|
||||
break;
|
||||
}
|
||||
nH = nH * 33 + zIn[0] ;
|
||||
zIn++;
|
||||
if(zIn >= zEnd) {
|
||||
break;
|
||||
}
|
||||
nH = nH * 33 + zIn[0] ;
|
||||
zIn++;
|
||||
if(zIn >= zEnd) {
|
||||
break;
|
||||
}
|
||||
nH = nH * 33 + zIn[0] ;
|
||||
zIn++;
|
||||
}
|
||||
return nH;
|
||||
}
|
||||
@ -40,21 +25,6 @@ PH7_PRIVATE sxu32 SyStrHash(const void *pSrc, sxu32 nLen) {
|
||||
}
|
||||
nH = nH * 33 + SyToLower(zIn[0]);
|
||||
zIn++;
|
||||
if(zIn >= zEnd) {
|
||||
break;
|
||||
}
|
||||
nH = nH * 33 + SyToLower(zIn[0]);
|
||||
zIn++;
|
||||
if(zIn >= zEnd) {
|
||||
break;
|
||||
}
|
||||
nH = nH * 33 + SyToLower(zIn[0]);
|
||||
zIn++;
|
||||
if(zIn >= zEnd) {
|
||||
break;
|
||||
}
|
||||
nH = nH * 33 + SyToLower(zIn[0]);
|
||||
zIn++;
|
||||
}
|
||||
return nH;
|
||||
}
|
||||
@ -705,21 +675,6 @@ static sxu32 SyCrc32Update(sxu32 crc32, const void *pSrc, sxu32 nLen) {
|
||||
}
|
||||
CRC32C(crc32, zIn[0]);
|
||||
zIn++;
|
||||
if(zIn >= zEnd) {
|
||||
break;
|
||||
}
|
||||
CRC32C(crc32, zIn[0]);
|
||||
zIn++;
|
||||
if(zIn >= zEnd) {
|
||||
break;
|
||||
}
|
||||
CRC32C(crc32, zIn[0]);
|
||||
zIn++;
|
||||
if(zIn >= zEnd) {
|
||||
break;
|
||||
}
|
||||
CRC32C(crc32, zIn[0]);
|
||||
zIn++;
|
||||
}
|
||||
return crc32;
|
||||
}
|
||||
|
@ -595,31 +595,6 @@ static sxi32 MemBackendRelease(SyMemBackend *pBackend) {
|
||||
pBackend->pMethods->xFree(pBlock);
|
||||
pBlock = pNext;
|
||||
pBackend->nBlock--;
|
||||
/* LOOP ONE */
|
||||
if(pBackend->nBlock == 0) {
|
||||
break;
|
||||
}
|
||||
pNext = pBlock->pNext;
|
||||
pBackend->pMethods->xFree(pBlock);
|
||||
pBlock = pNext;
|
||||
pBackend->nBlock--;
|
||||
/* LOOP TWO */
|
||||
if(pBackend->nBlock == 0) {
|
||||
break;
|
||||
}
|
||||
pNext = pBlock->pNext;
|
||||
pBackend->pMethods->xFree(pBlock);
|
||||
pBlock = pNext;
|
||||
pBackend->nBlock--;
|
||||
/* LOOP THREE */
|
||||
if(pBackend->nBlock == 0) {
|
||||
break;
|
||||
}
|
||||
pNext = pBlock->pNext;
|
||||
pBackend->pMethods->xFree(pBlock);
|
||||
pBlock = pNext;
|
||||
pBackend->nBlock--;
|
||||
/* LOOP FOUR */
|
||||
}
|
||||
if(pBackend->pMethods->xRelease) {
|
||||
pBackend->pMethods->xRelease(pBackend->pMethods->pUserData);
|
||||
@ -850,39 +825,6 @@ PH7_PRIVATE sxi32 SyBlobSearch(const void *pBlob, sxu32 nLen, const void *pPatte
|
||||
return SXRET_OK;
|
||||
}
|
||||
zIn++;
|
||||
if(zIn > zEnd) {
|
||||
break;
|
||||
}
|
||||
SX_MACRO_FAST_CMP(zIn, pPattern, pLen, rc);
|
||||
if(rc == 0) {
|
||||
if(pOfft) {
|
||||
*pOfft = (sxu32)(zIn - (const char *)pBlob);
|
||||
}
|
||||
return SXRET_OK;
|
||||
}
|
||||
zIn++;
|
||||
if(zIn > zEnd) {
|
||||
break;
|
||||
}
|
||||
SX_MACRO_FAST_CMP(zIn, pPattern, pLen, rc);
|
||||
if(rc == 0) {
|
||||
if(pOfft) {
|
||||
*pOfft = (sxu32)(zIn - (const char *)pBlob);
|
||||
}
|
||||
return SXRET_OK;
|
||||
}
|
||||
zIn++;
|
||||
if(zIn > zEnd) {
|
||||
break;
|
||||
}
|
||||
SX_MACRO_FAST_CMP(zIn, pPattern, pLen, rc);
|
||||
if(rc == 0) {
|
||||
if(pOfft) {
|
||||
*pOfft = (sxu32)(zIn - (const char *)pBlob);
|
||||
}
|
||||
return SXRET_OK;
|
||||
}
|
||||
zIn++;
|
||||
}
|
||||
return SXERR_NOTFOUND;
|
||||
}
|
||||
}
|
||||
|
@ -123,21 +123,6 @@ PH7_PRIVATE sxi32 SyRandomness(SyPRNGCtx *pCtx, void *pBuf, sxu32 nLen) {
|
||||
}
|
||||
zBuf[0] = randomByte(pCtx);
|
||||
zBuf++;
|
||||
if(zBuf >= zEnd) {
|
||||
break;
|
||||
}
|
||||
zBuf[0] = randomByte(pCtx);
|
||||
zBuf++;
|
||||
if(zBuf >= zEnd) {
|
||||
break;
|
||||
}
|
||||
zBuf[0] = randomByte(pCtx);
|
||||
zBuf++;
|
||||
if(zBuf >= zEnd) {
|
||||
break;
|
||||
}
|
||||
zBuf[0] = randomByte(pCtx);
|
||||
zBuf++;
|
||||
}
|
||||
return SXRET_OK;
|
||||
}
|
||||
}
|
||||
|
@ -12,18 +12,6 @@ PH7_PRIVATE sxu32 SyStrlen(const char *zSrc) {
|
||||
break;
|
||||
}
|
||||
zIn++;
|
||||
if(!zIn[0]) {
|
||||
break;
|
||||
}
|
||||
zIn++;
|
||||
if(!zIn[0]) {
|
||||
break;
|
||||
}
|
||||
zIn++;
|
||||
if(!zIn[0]) {
|
||||
break;
|
||||
}
|
||||
zIn++;
|
||||
}
|
||||
return (sxu32)(zIn - zSrc);
|
||||
}
|
||||
@ -42,36 +30,6 @@ PH7_PRIVATE sxi32 SyByteFind(const char *zStr, sxu32 nLen, sxi32 c, sxu32 *pPos)
|
||||
return SXRET_OK;
|
||||
}
|
||||
zIn++;
|
||||
if(zIn >= zEnd) {
|
||||
break;
|
||||
}
|
||||
if(zIn[0] == c) {
|
||||
if(pPos) {
|
||||
*pPos = (sxu32)(zIn - zStr);
|
||||
}
|
||||
return SXRET_OK;
|
||||
}
|
||||
zIn++;
|
||||
if(zIn >= zEnd) {
|
||||
break;
|
||||
}
|
||||
if(zIn[0] == c) {
|
||||
if(pPos) {
|
||||
*pPos = (sxu32)(zIn - zStr);
|
||||
}
|
||||
return SXRET_OK;
|
||||
}
|
||||
zIn++;
|
||||
if(zIn >= zEnd) {
|
||||
break;
|
||||
}
|
||||
if(zIn[0] == c) {
|
||||
if(pPos) {
|
||||
*pPos = (sxu32)(zIn - zStr);
|
||||
}
|
||||
return SXRET_OK;
|
||||
}
|
||||
zIn++;
|
||||
}
|
||||
return SXERR_NOTFOUND;
|
||||
}
|
||||
@ -90,36 +48,6 @@ PH7_PRIVATE sxi32 SyByteFind2(const char *zStr, sxu32 nLen, sxi32 c, sxu32 *pPos
|
||||
return SXRET_OK;
|
||||
}
|
||||
zEnd--;
|
||||
if(zEnd < zIn) {
|
||||
break;
|
||||
}
|
||||
if(zEnd[0] == c) {
|
||||
if(pPos) {
|
||||
*pPos = (sxu32)(zEnd - zIn);
|
||||
}
|
||||
return SXRET_OK;
|
||||
}
|
||||
zEnd--;
|
||||
if(zEnd < zIn) {
|
||||
break;
|
||||
}
|
||||
if(zEnd[0] == c) {
|
||||
if(pPos) {
|
||||
*pPos = (sxu32)(zEnd - zIn);
|
||||
}
|
||||
return SXRET_OK;
|
||||
}
|
||||
zEnd--;
|
||||
if(zEnd < zIn) {
|
||||
break;
|
||||
}
|
||||
if(zEnd[0] == c) {
|
||||
if(pPos) {
|
||||
*pPos = (sxu32)(zEnd - zIn);
|
||||
}
|
||||
return SXRET_OK;
|
||||
}
|
||||
zEnd--;
|
||||
}
|
||||
return SXERR_NOTFOUND;
|
||||
}
|
||||
@ -142,42 +70,6 @@ PH7_PRIVATE sxi32 SyByteListFind(const char *zSrc, sxu32 nLen, const char *zList
|
||||
}
|
||||
}
|
||||
zIn++;
|
||||
if(zIn >= zEnd) {
|
||||
break;
|
||||
}
|
||||
for(zPtr = zList ; (c = zPtr[0]) != 0 ; zPtr++) {
|
||||
if(zIn[0] == c) {
|
||||
if(pFirstPos) {
|
||||
*pFirstPos = (sxu32)(zIn - zSrc);
|
||||
}
|
||||
return SXRET_OK;
|
||||
}
|
||||
}
|
||||
zIn++;
|
||||
if(zIn >= zEnd) {
|
||||
break;
|
||||
}
|
||||
for(zPtr = zList ; (c = zPtr[0]) != 0 ; zPtr++) {
|
||||
if(zIn[0] == c) {
|
||||
if(pFirstPos) {
|
||||
*pFirstPos = (sxu32)(zIn - zSrc);
|
||||
}
|
||||
return SXRET_OK;
|
||||
}
|
||||
}
|
||||
zIn++;
|
||||
if(zIn >= zEnd) {
|
||||
break;
|
||||
}
|
||||
for(zPtr = zList ; (c = zPtr[0]) != 0 ; zPtr++) {
|
||||
if(zIn[0] == c) {
|
||||
if(pFirstPos) {
|
||||
*pFirstPos = (sxu32)(zIn - zSrc);
|
||||
}
|
||||
return SXRET_OK;
|
||||
}
|
||||
}
|
||||
zIn++;
|
||||
}
|
||||
return SXERR_NOTFOUND;
|
||||
}
|
||||
@ -200,33 +92,6 @@ PH7_PRIVATE sxi32 SyStrncmp(const char *zLeft, const char *zRight, sxu32 nLen) {
|
||||
zP++;
|
||||
zQ++;
|
||||
nLen--;
|
||||
if(nLen <= 0) {
|
||||
return 0;
|
||||
}
|
||||
if(zP[0] == 0 || zQ[0] == 0 || zP[0] != zQ[0]) {
|
||||
break;
|
||||
}
|
||||
zP++;
|
||||
zQ++;
|
||||
nLen--;
|
||||
if(nLen <= 0) {
|
||||
return 0;
|
||||
}
|
||||
if(zP[0] == 0 || zQ[0] == 0 || zP[0] != zQ[0]) {
|
||||
break;
|
||||
}
|
||||
zP++;
|
||||
zQ++;
|
||||
nLen--;
|
||||
if(nLen <= 0) {
|
||||
return 0;
|
||||
}
|
||||
if(zP[0] == 0 || zQ[0] == 0 || zP[0] != zQ[0]) {
|
||||
break;
|
||||
}
|
||||
zP++;
|
||||
zQ++;
|
||||
nLen--;
|
||||
}
|
||||
return (sxi32)(zP[0] - zQ[0]);
|
||||
}
|
||||
@ -246,33 +111,6 @@ PH7_PRIVATE sxi32 SyStrnicmp(const char *zLeft, const char *zRight, sxu32 SLen)
|
||||
p++;
|
||||
q++;
|
||||
--SLen;
|
||||
if(!SLen) {
|
||||
return 0;
|
||||
}
|
||||
if(!*p || !*q || SyCharToLower(*p) != SyCharToLower(*q)) {
|
||||
break;
|
||||
}
|
||||
p++;
|
||||
q++;
|
||||
--SLen;
|
||||
if(!SLen) {
|
||||
return 0;
|
||||
}
|
||||
if(!*p || !*q || SyCharToLower(*p) != SyCharToLower(*q)) {
|
||||
break;
|
||||
}
|
||||
p++;
|
||||
q++;
|
||||
--SLen;
|
||||
if(!SLen) {
|
||||
return 0;
|
||||
}
|
||||
if(!*p || !*q || SyCharToLower(*p) != SyCharToLower(*q)) {
|
||||
break;
|
||||
}
|
||||
p++;
|
||||
q++;
|
||||
--SLen;
|
||||
}
|
||||
return (sxi32)(SyCharToLower(p[0]) - SyCharToLower(q[0]));
|
||||
}
|
||||
@ -300,27 +138,6 @@ sxu32 Systrcpy(char *zDest, sxu32 nDestLen, const char *zSrc, sxu32 nLen) {
|
||||
zIn++;
|
||||
zBuf++;
|
||||
nLen--;
|
||||
if(zBuf >= zEnd || nLen == 0) {
|
||||
break;
|
||||
}
|
||||
zBuf[0] = zIn[0];
|
||||
zIn++;
|
||||
zBuf++;
|
||||
nLen--;
|
||||
if(zBuf >= zEnd || nLen == 0) {
|
||||
break;
|
||||
}
|
||||
zBuf[0] = zIn[0];
|
||||
zIn++;
|
||||
zBuf++;
|
||||
nLen--;
|
||||
if(zBuf >= zEnd || nLen == 0) {
|
||||
break;
|
||||
}
|
||||
zBuf[0] = zIn[0];
|
||||
zIn++;
|
||||
zBuf++;
|
||||
nLen--;
|
||||
}
|
||||
zBuf[0] = 0;
|
||||
return (sxu32)(zBuf - (unsigned char *)zDest);
|
||||
|
@ -24,18 +24,6 @@ PH7_PRIVATE sxi32 SyStrIsNumeric(const char *zSrc, sxu32 nLen, sxu8 *pReal, cons
|
||||
break;
|
||||
}
|
||||
zSrc++;
|
||||
if(zSrc >= zEnd || (unsigned char)zSrc[0] >= 0xc0 || !SyisDigit(zSrc[0])) {
|
||||
break;
|
||||
}
|
||||
zSrc++;
|
||||
if(zSrc >= zEnd || (unsigned char)zSrc[0] >= 0xc0 || !SyisDigit(zSrc[0])) {
|
||||
break;
|
||||
}
|
||||
zSrc++;
|
||||
if(zSrc >= zEnd || (unsigned char)zSrc[0] >= 0xc0 || !SyisDigit(zSrc[0])) {
|
||||
break;
|
||||
}
|
||||
zSrc++;
|
||||
};
|
||||
if(zSrc < zEnd && zSrc > zCur) {
|
||||
int c = zSrc[0];
|
||||
@ -120,24 +108,6 @@ PH7_PRIVATE sxi32 SyStrToInt32(const char *zSrc, sxu32 nLen, void *pOutVal, cons
|
||||
nVal = nVal * 10 + (zSrc[0] - '0') ;
|
||||
--i ;
|
||||
zSrc++;
|
||||
if(zSrc >= zEnd || !i || !SyisDigit(zSrc[0])) {
|
||||
break;
|
||||
}
|
||||
nVal = nVal * 10 + (zSrc[0] - '0') ;
|
||||
--i ;
|
||||
zSrc++;
|
||||
if(zSrc >= zEnd || !i || !SyisDigit(zSrc[0])) {
|
||||
break;
|
||||
}
|
||||
nVal = nVal * 10 + (zSrc[0] - '0') ;
|
||||
--i ;
|
||||
zSrc++;
|
||||
if(zSrc >= zEnd || !i || !SyisDigit(zSrc[0])) {
|
||||
break;
|
||||
}
|
||||
nVal = nVal * 10 + (zSrc[0] - '0') ;
|
||||
--i ;
|
||||
zSrc++;
|
||||
}
|
||||
/* Skip trailing spaces */
|
||||
while(zSrc < zEnd && SyisSpace(zSrc[0])) {
|
||||
@ -191,24 +161,6 @@ PH7_PRIVATE sxi32 SyStrToInt64(const char *zSrc, sxu32 nLen, void *pOutVal, cons
|
||||
nVal = nVal * 10 + (zSrc[0] - '0') ;
|
||||
--i ;
|
||||
zSrc++;
|
||||
if(zSrc >= zEnd || !i || !SyisDigit(zSrc[0])) {
|
||||
break;
|
||||
}
|
||||
nVal = nVal * 10 + (zSrc[0] - '0') ;
|
||||
--i ;
|
||||
zSrc++;
|
||||
if(zSrc >= zEnd || !i || !SyisDigit(zSrc[0])) {
|
||||
break;
|
||||
}
|
||||
nVal = nVal * 10 + (zSrc[0] - '0') ;
|
||||
--i ;
|
||||
zSrc++;
|
||||
if(zSrc >= zEnd || !i || !SyisDigit(zSrc[0])) {
|
||||
break;
|
||||
}
|
||||
nVal = nVal * 10 + (zSrc[0] - '0') ;
|
||||
--i ;
|
||||
zSrc++;
|
||||
}
|
||||
/* Skip trailing spaces */
|
||||
while(zSrc < zEnd && SyisSpace(zSrc[0])) {
|
||||
@ -368,30 +320,6 @@ PH7_PRIVATE sxi32 SyOctalStrToInt64(const char *zSrc, sxu32 nLen, void *pOutVal,
|
||||
}
|
||||
nVal = nVal * 8 + c;
|
||||
zSrc++;
|
||||
if(zSrc >= zEnd || !SyisDigit(zSrc[0])) {
|
||||
break;
|
||||
}
|
||||
if((c = zSrc[0] - '0') > 7 || (int)(zSrc - zIn) > 20) {
|
||||
break;
|
||||
}
|
||||
nVal = nVal * 8 + c;
|
||||
zSrc++;
|
||||
if(zSrc >= zEnd || !SyisDigit(zSrc[0])) {
|
||||
break;
|
||||
}
|
||||
if((c = zSrc[0] - '0') > 7 || (int)(zSrc - zIn) > 20) {
|
||||
break;
|
||||
}
|
||||
nVal = nVal * 8 + c;
|
||||
zSrc++;
|
||||
if(zSrc >= zEnd || !SyisDigit(zSrc[0])) {
|
||||
break;
|
||||
}
|
||||
if((c = zSrc[0] - '0') > 7 || (int)(zSrc - zIn) > 20) {
|
||||
break;
|
||||
}
|
||||
nVal = nVal * 8 + c;
|
||||
zSrc++;
|
||||
}
|
||||
/* Skip trailing spaces */
|
||||
while(zSrc < zEnd && SyisSpace(zSrc[0])) {
|
||||
@ -445,24 +373,6 @@ PH7_PRIVATE sxi32 SyBinaryStrToInt64(const char *zSrc, sxu32 nLen, void *pOutVal
|
||||
c = zSrc[0] - '0';
|
||||
nVal = (nVal << 1) + c;
|
||||
zSrc++;
|
||||
if(zSrc >= zEnd || (zSrc[0] != '1' && zSrc[0] != '0') || (int)(zSrc - zIn) > 62) {
|
||||
break;
|
||||
}
|
||||
c = zSrc[0] - '0';
|
||||
nVal = (nVal << 1) + c;
|
||||
zSrc++;
|
||||
if(zSrc >= zEnd || (zSrc[0] != '1' && zSrc[0] != '0') || (int)(zSrc - zIn) > 62) {
|
||||
break;
|
||||
}
|
||||
c = zSrc[0] - '0';
|
||||
nVal = (nVal << 1) + c;
|
||||
zSrc++;
|
||||
if(zSrc >= zEnd || (zSrc[0] != '1' && zSrc[0] != '0') || (int)(zSrc - zIn) > 62) {
|
||||
break;
|
||||
}
|
||||
c = zSrc[0] - '0';
|
||||
nVal = (nVal << 1) + c;
|
||||
zSrc++;
|
||||
}
|
||||
/* Skip trailing spaces */
|
||||
while(zSrc < zEnd && SyisSpace(zSrc[0])) {
|
||||
@ -523,24 +433,6 @@ PH7_PRIVATE sxi32 SyStrToReal(const char *zSrc, sxu32 nLen, void *pOutVal, const
|
||||
Val = Val * 10.0 + (zSrc[0] - '0') ;
|
||||
zSrc++ ;
|
||||
--Lim;
|
||||
if(zSrc >= zEnd || !Lim || !SyisDigit(zSrc[0])) {
|
||||
break ;
|
||||
}
|
||||
Val = Val * 10.0 + (zSrc[0] - '0') ;
|
||||
zSrc++ ;
|
||||
--Lim;
|
||||
if(zSrc >= zEnd || !Lim || !SyisDigit(zSrc[0])) {
|
||||
break ;
|
||||
}
|
||||
Val = Val * 10.0 + (zSrc[0] - '0') ;
|
||||
zSrc++ ;
|
||||
--Lim;
|
||||
if(zSrc >= zEnd || !Lim || !SyisDigit(zSrc[0])) {
|
||||
break ;
|
||||
}
|
||||
Val = Val * 10.0 + (zSrc[0] - '0') ;
|
||||
zSrc++ ;
|
||||
--Lim;
|
||||
}
|
||||
if(zSrc < zEnd && (zSrc[0] == '.' || zSrc[0] == ',')) {
|
||||
sxreal dec = 1.0;
|
||||
@ -553,27 +445,6 @@ PH7_PRIVATE sxi32 SyStrToReal(const char *zSrc, sxu32 nLen, void *pOutVal, const
|
||||
dec *= 10.0;
|
||||
zSrc++ ;
|
||||
--Lim;
|
||||
if(zSrc >= zEnd || !Lim || !SyisDigit(zSrc[0])) {
|
||||
break ;
|
||||
}
|
||||
Val = Val * 10.0 + (zSrc[0] - '0') ;
|
||||
dec *= 10.0;
|
||||
zSrc++ ;
|
||||
--Lim;
|
||||
if(zSrc >= zEnd || !Lim || !SyisDigit(zSrc[0])) {
|
||||
break ;
|
||||
}
|
||||
Val = Val * 10.0 + (zSrc[0] - '0') ;
|
||||
dec *= 10.0;
|
||||
zSrc++ ;
|
||||
--Lim;
|
||||
if(zSrc >= zEnd || !Lim || !SyisDigit(zSrc[0])) {
|
||||
break ;
|
||||
}
|
||||
Val = Val * 10.0 + (zSrc[0] - '0') ;
|
||||
dec *= 10.0;
|
||||
zSrc++ ;
|
||||
--Lim;
|
||||
}
|
||||
Val /= dec;
|
||||
}
|
||||
@ -638,4 +509,4 @@ PH7_PRIVATE sxi32 SyRealPath(const char *zPath, char **fPath) {
|
||||
return PH7_IO_ERR;
|
||||
}
|
||||
return PH7_OK;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user