diff options
Diffstat (limited to 'src/backend/lib/bloomfilter.c')
-rw-r--r-- | src/backend/lib/bloomfilter.c | 15 |
1 files changed, 2 insertions, 13 deletions
diff --git a/src/backend/lib/bloomfilter.c b/src/backend/lib/bloomfilter.c index 1e907cabc6e..e2c1276f219 100644 --- a/src/backend/lib/bloomfilter.c +++ b/src/backend/lib/bloomfilter.c @@ -37,6 +37,7 @@ #include "access/hash.h" #include "lib/bloomfilter.h" +#include "port/pg_bitutils.h" #define MAX_HASH_FUNCS 10 @@ -187,19 +188,7 @@ double bloom_prop_bits_set(bloom_filter *filter) { int bitset_bytes = filter->m / BITS_PER_BYTE; - uint64 bits_set = 0; - int i; - - for (i = 0; i < bitset_bytes; i++) - { - unsigned char byte = filter->bitset[i]; - - while (byte) - { - bits_set++; - byte &= (byte - 1); - } - } + uint64 bits_set = pg_popcount((char *) filter->bitset, bitset_bytes); return bits_set / (double) filter->m; } |