Procházet zdrojové kódy

hashindex: minor refactor

- rename BUCKET_(LOWER|UPPER)_LIMIT to HASH_(MIN|MAX)_LOAD
   as this value is usually called the hash table's minimum/maximum load factor.
- remove MAX_BUCKET_SIZE (not used)
- regroup/reorder definitions
Thomas Waldmann před 9 roky
rodič
revize
91cde721b4
1 změnil soubory, kde provedl 11 přidání a 9 odebrání
  1. 11 9
      borg/_hashindex.c

+ 11 - 9
borg/_hashindex.c

@@ -53,20 +53,22 @@ static int hash_sizes[] = {
     1703765389, 1873768367, 2062383853, /* 32bit int ends about here */
 };
 
-#define EMPTY _htole32(0xffffffff)
-#define DELETED _htole32(0xfffffffe)
-#define MAX_BUCKET_SIZE 512
-#define BUCKET_LOWER_LIMIT .25
-#define BUCKET_UPPER_LIMIT .75  /* don't go higher than 0.75, otherwise performance severely suffers! */
+#define HASH_MIN_LOAD .25
+#define HASH_MAX_LOAD .75  /* don't go higher than 0.75, otherwise performance severely suffers! */
+
 #define MAX(x, y) ((x) > (y) ? (x): (y))
 #define NELEMS(x) (sizeof(x) / sizeof((x)[0]))
+
+#define EMPTY _htole32(0xffffffff)
+#define DELETED _htole32(0xfffffffe)
+
 #define BUCKET_ADDR(index, idx) (index->buckets + (idx * index->bucket_size))
 
+#define BUCKET_MATCHES_KEY(index, idx, key) (memcmp(key, BUCKET_ADDR(index, idx), index->key_size) == 0)
+
 #define BUCKET_IS_DELETED(index, idx) (*((uint32_t *)(BUCKET_ADDR(index, idx) + index->key_size)) == DELETED)
 #define BUCKET_IS_EMPTY(index, idx) (*((uint32_t *)(BUCKET_ADDR(index, idx) + index->key_size)) == EMPTY)
 
-#define BUCKET_MATCHES_KEY(index, idx, key) (memcmp(key, BUCKET_ADDR(index, idx), index->key_size) == 0)
-
 #define BUCKET_MARK_DELETED(index, idx) (*((uint32_t *)(BUCKET_ADDR(index, idx) + index->key_size)) = DELETED)
 #define BUCKET_MARK_EMPTY(index, idx) (*((uint32_t *)(BUCKET_ADDR(index, idx) + index->key_size)) = EMPTY)
 
@@ -233,14 +235,14 @@ int get_lower_limit(int num_buckets){
     int min_buckets = hash_sizes[0];
     if (num_buckets <= min_buckets)
         return 0;
-    return (int)(num_buckets * BUCKET_LOWER_LIMIT);
+    return (int)(num_buckets * HASH_MIN_LOAD);
 }
 
 int get_upper_limit(int num_buckets){
     int max_buckets = hash_sizes[NELEMS(hash_sizes) - 1];
     if (num_buckets >= max_buckets)
         return max_buckets;
-    return (int)(num_buckets * BUCKET_UPPER_LIMIT);
+    return (int)(num_buckets * HASH_MAX_LOAD);
 }
 
 int size_idx(int size){