Changeset: 0ffddbf066db for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=0ffddbf066db
Modified Files:
        gdk/gdk_hash.c
Branch: linear-hashing
Log Message:

Keep hash table 7/8 full.


diffs (39 lines):

diff --git a/gdk/gdk_hash.c b/gdk/gdk_hash.c
--- a/gdk/gdk_hash.c
+++ b/gdk/gdk_hash.c
@@ -54,6 +54,7 @@ HASHmask(BUN cnt)
 {
        BUN m = cnt;
 
+#if 0
        /* find largest power of 2 smaller than or equal to cnt */
        m |= m >> 1;
        m |= m >> 2;
@@ -69,6 +70,9 @@ HASHmask(BUN cnt)
           double m */
        if (m + m - cnt < 2 * (cnt - m))
                m += m;
+#else
+       m = m * 8 / 7;
+#endif
        if (m < BATTINY)
                m = BATTINY;
        return m;
@@ -327,7 +331,7 @@ HASHgrowbucket(BAT *b)
                                MT_msync(h->heapbckt.base, SIZEOF_SIZE_T);
                }
        }
-       while (h->nunique >= (nbucket = NHASHBUCKETS(h)) * 3 / 4) {
+       while (h->nunique >= (nbucket = NHASHBUCKETS(h)) * 7 / 8) {
                BUN old = h->split;
                BUN new = ((BUN) 1 << h->level) + h->split;
                BATiter bi = bat_iterator(b);
@@ -721,7 +725,7 @@ BAThash_impl(BAT *b, BAT *s, const char 
                mask = HASHmask(cnt);
        } else if (s == NULL && (prop = BATgetprop_nolock(b, GDK_NUNIQUE)) != 
NULL) {
                assert(prop->v.vtype == TYPE_oid);
-               mask = prop->v.val.oval * 4 / 3;
+               mask = prop->v.val.oval * 8 / 7;
        } else if (s == NULL && (prop = BATgetprop_nolock(b, GDK_HASH_BUCKETS)) 
!= NULL) {
                assert(prop->v.vtype == TYPE_oid);
                mask = prop->v.val.oval;
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to