After a little more analysis, I think using 33 instead of 37 as the magic multiplier gives just as good a distribution, but is a little faster to compute.

This commit is contained in:
warren%netscape.com 2000-08-20 22:28:12 +00:00
Родитель 6c5396be46
Коммит 423ff00d4f
1 изменённых файлов: 6 добавлений и 6 удалений

Просмотреть файл

@ -508,8 +508,8 @@ PRUint32 nsCRT::HashCode(const char* str, PRUint32* resultingStrLen)
if (str) {
char ch;
while ((ch = *str++) != 0) {
// FYI: hc = hc*37 + ch
hc = ((hc << 5) + (hc << 2) + hc) + ch;
// FYI: hc = hc*33 + ch
hc = ((hc << 5) + hc) + ch;
len++;
}
}
@ -524,8 +524,8 @@ PRUint32 nsCRT::HashCode(const PRUnichar* str, PRUint32* resultingStrLen)
if (str) {
PRUnichar ch;
while ((ch = *str++) != 0) {
// FYI: hc = hc*37 + ch
hc = ((hc << 5) + (hc << 2) + hc) + ch;
// FYI: hc = hc*33 + ch
hc = ((hc << 5) + hc) + ch;
len++;
}
}
@ -539,8 +539,8 @@ PRUint32 nsCRT::BufferHashCode(const char* buf, PRUint32 len)
PRUint32 hc = 0;
for (PRUint32 i = 0; i < len; i++) {
char ch = *buf++;
// FYI: hc = hc*37 + ch
hc = ((hc << 5) + (hc << 2) + hc) + ch;
// FYI: hc = hc*33 + ch
hc = ((hc << 5) + hc) + ch;
}
return hc;
}