Changeset: c9692c4bb93a for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c9692c4bb93a Modified Files: gdk/gdk_hash.c Branch: Oct2020 Log Message:
Don't count unique values for temporary (candidate) hashes. Number of unique values are only needed for hash tables that can grow. diffs (47 lines): diff --git a/gdk/gdk_hash.c b/gdk/gdk_hash.c --- a/gdk/gdk_hash.c +++ b/gdk/gdk_hash.c @@ -686,13 +686,15 @@ BAThashsync(void *arg) c = hash_##TYPE(h, v + o - b->hseqbase); \ hget = HASHget(h, c); \ h->nheads += hget == hnil; \ - for (hb = hget; \ - hb != hnil; \ - hb = HASHgetlink(h, hb)) { \ - if (EQ##TYPE(v[o - b->hseqbase], v[hb])) \ - break; \ + if (!hascand) { \ + for (hb = hget; \ + hb != hnil; \ + hb = HASHgetlink(h, hb)) { \ + if (EQ##TYPE(v[o - b->hseqbase], v[hb])) \ + break; \ + } \ + h->nunique += hb == hnil; \ } \ - h->nunique += hb == hnil; \ HASHputlink(h, p, hget); \ HASHput(h, c, p); \ o = canditer_next(ci); \ @@ -923,13 +925,15 @@ BAThash_impl(BAT *restrict b, struct can c = hash_any(h, v); hget = HASHget(h, c); h->nheads += hget == hnil; - for (hb = hget; - hb != hnil; - hb = HASHgetlink(h, hb)) { - if (ATOMcmp(h->type, v, BUNtail(bi, hb)) == 0) - break; + if (!hascand) { + for (hb = hget; + hb != hnil; + hb = HASHgetlink(h, hb)) { + if (ATOMcmp(h->type, v, BUNtail(bi, hb)) == 0) + break; + } + h->nunique += hb == hnil; } - h->nunique += hb == hnil; HASHputlink(h, p, hget); HASHput(h, c, p); o = canditer_next(ci); _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list