]> git.ozlabs.org Git - ccan/blobdiff - ccan/htable/tools/speed.c
htable: reduce size of htable by storing perfect bitnum, not mask.
[ccan] / ccan / htable / tools / speed.c
index a6e856d8c9a36f6300e7e7aa0f85245434408d4b..e185b6f69eb74f3435789d82abe144eb32d8d1ca 100644 (file)
@@ -74,8 +74,8 @@ static size_t perfect(const struct htable *ht)
                        continue;
                if (hash_bucket(ht, ht->rehash(get_raw_ptr(ht, ht->table[i]),
                                               ht->priv)) == i) {
-                       assert((ht->table[i] & ht->perfect_bit)
-                              == ht->perfect_bit);
+                       assert((ht->table[i] & ht_perfect_mask(ht))
+                              == ht_perfect_mask(ht));
                        placed_perfect++;
                }
        }
@@ -94,11 +94,11 @@ static size_t count_deleted(const struct htable *ht)
 }
 
 /* Nanoseconds per operation */
-static size_t normalize(const struct timespec *start,
-                       const struct timespec *stop,
+static size_t normalize(const struct timeabs *start,
+                       const struct timeabs *stop,
                        unsigned int num)
 {
-       return time_to_nsec(time_divide(time_sub(*stop, *start), num));
+       return time_to_nsec(time_divide(time_between(*stop, *start), num));
 }
 
 static size_t worst_run(struct htable *ht, size_t *deleted)
@@ -127,8 +127,9 @@ static size_t worst_run(struct htable *ht, size_t *deleted)
 int main(int argc, char *argv[])
 {
        struct object *objs;
-       size_t i, j, num, deleted;
-       struct timespec start, stop;
+       unsigned int i, j;
+       size_t num, deleted;
+       struct timeabs start, stop;
        struct htable_obj ht;
        bool make_dumb = false;
 
@@ -305,7 +306,7 @@ int main(int argc, char *argv[])
        printf("Details: delete markers %zu, perfect %.0f%%\n",
               count_deleted(&ht.raw), perfect(&ht.raw) * 100.0 / ht.raw.elems);
        i = worst_run(&ht.raw, &deleted);
-       printf("Details: worst run %zu (%zu deleted)\n", i, deleted);
+       printf("Details: worst run %u (%zu deleted)\n", i, deleted);
 
        printf("Lookup after churn & spread (match): ");
        fflush(stdout);