Browse Source

Merge pull request #2908 from ThomasWaldmann/hash_modulo_speedup-1.0

replace modulo with if to check for wraparound in hashmap
TW 7 years ago
parent
commit
2134a84895
1 changed files with 8 additions and 2 deletions
  1. 8 2
      borg/_hashindex.c

+ 8 - 2
borg/_hashindex.c

@@ -143,7 +143,10 @@ hashindex_lookup(HashIndex *index, const void *key)
             }
             return idx;
         }
-        idx = (idx + 1) % index->num_buckets;
+        idx++;
+        if (idx >= index->num_buckets) {
+            idx -= index->num_buckets;
+        }
         if(idx == start) {
             return -1;
         }
@@ -434,7 +437,10 @@ hashindex_set(HashIndex *index, const void *key, const void *value)
         }
         idx = hashindex_index(index, key);
         while(!BUCKET_IS_EMPTY(index, idx) && !BUCKET_IS_DELETED(index, idx)) {
-            idx = (idx + 1) % index->num_buckets;
+            idx++;
+            if (idx >= index->num_buckets){
+                idx -= index->num_buckets;
+            }
         }
         if(BUCKET_IS_EMPTY(index, idx)){
             index->num_empty--;