• Andres Freund's avatar
    Use more efficient hashtable for tidbitmap.c to speed up bitmap scans. · 75ae538b
    Andres Freund authored
    Use the new simplehash.h to speed up tidbitmap.c uses. For bitmap scan
    heavy queries speedups of over 100% have been measured. Both lossy and
    exact scans benefit, but the wins are bigger for mostly exact scans.
    
    The conversion is mostly trivial, except that tbm_lossify() now restarts
    lossifying at the point it previously stopped. Otherwise the hash table
    becomes unbalanced because the scan in done in hash-order, leaving the
    end of the hashtable more densely filled then the beginning. That caused
    performance issues with dynahash as well, but due to the open chaining
    they were less pronounced than with the linear adressing from
    simplehash.h.
    
    Reviewed-By: Tomas Vondra
    Discussion: <20160727004333.r3e2k2y6fvk2ntup@alap3.anarazel.de>
    75ae538b
tidbitmap.c 29 KB