Change hash algorithm to be slightly faster

This commit is contained in:
Marty Kraimer
1997-03-13 16:38:09 +00:00
parent cdbbf69a1e
commit 85432e6307
+8 -7
View File
@@ -70,14 +70,15 @@ static unsigned short hash( char *pname, int length)
unsigned char h0=0;
unsigned char h1=0;
unsigned short ind0,ind1;
int even = TRUE;
unsigned char c;
int i;
int isOdd;
int i,n;
for(i=0; i<length; i++, pname++) {
c = *pname;
if(even) {h0 = T[h0^c]; even = FALSE;}
else {h1 = T[h1^c]; even = TRUE;}
isOdd = length%2; /*See if length is odd number of chanacters*/
n = (isOdd ? (length-1) : length);
if(isOdd) h0 = T[h0^*(pname + length -1)];
for(i=0; i<n; i+=2, pname+=2) {
h0 = T[h0^*pname];
h1 = T[h1^*(pname+1)];
}
ind0 = (unsigned short)h0;
ind1 = (unsigned short)h1;