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

Reply via email to