]> git.sur5r.net Git - bacula/bacula/commitdiff
Tweak hash algorithm for htable using Martin Simmons idea
authorKern Sibbald <kern@sibbald.com>
Mon, 31 Mar 2008 18:50:24 +0000 (18:50 +0000)
committerKern Sibbald <kern@sibbald.com>
Mon, 31 Mar 2008 18:50:24 +0000 (18:50 +0000)
     for doing a circular shift.

git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@6709 91ce42f0-d328-0410-95d8-f526ca767f89

bacula/src/lib/htable.c
bacula/technotes-2.3

index 280939dcf38ba39bc1ccb77bcd0b338c0cb4660d..25cafb9f547eef75722ec3aec6c3d5908b5e5055 100644 (file)
@@ -127,7 +127,8 @@ void htable::hash_index(char *key)
 {
    hash = 0;
    for (char *p=key; *p; p++) {
-      hash += (hash << 3) + (uint32_t)*p;
+//    hash += (hash << 3) + (uint32_t)*p;
+      hash +=  ((hash << 5) | (hash >> (sizeof(hash)*8-5))) + (uint32_t)*p;
    }
    /* Multiply by large prime number, take top bits, mask for remainder */
    index = ((hash * 1103515249) >> rshift) & mask;
index 9a5fd46f5bfec4a448bd53a93eb62a42af30a12c..b7dd8ccac312207a949b039a1c5c9d8dc26e207e 100644 (file)
@@ -25,6 +25,8 @@ Add long term statistics job table
 
 General:
 31Mar08
+kes  Tweak hash algorithm for htable using Martin Simmons idea
+     for doing a circular shift.
 kes  Remember what volume is in VTLs (previously turned off for
      testing).
 kes  Analysis of JobMedia records by Tom Ivar Helbekkmo <tih@hamartun.priv.no>