diff options
author | Alvaro Herrera <alvherre@alvh.no-ip.org> | 2019-02-15 16:32:30 -0300 |
---|---|---|
committer | Alvaro Herrera <alvherre@alvh.no-ip.org> | 2019-02-15 16:32:30 -0300 |
commit | 457aef0f1fd365c68fab3fa2ca3ae48c5bd230c6 (patch) | |
tree | 9405a4a8b2406ab0d138a4ee7230891f7ffa3bfa /src/backend/lib/bloomfilter.c | |
parent | e89f14e2bb9f7c392c4c85a53ab5a13ea2aed83d (diff) | |
download | postgresql-457aef0f1fd365c68fab3fa2ca3ae48c5bd230c6.tar.gz postgresql-457aef0f1fd365c68fab3fa2ca3ae48c5bd230c6.zip |
Revert attempts to use POPCNT etc instructions
This reverts commits fc6c72747ae6, 109de05cbb03, d0b4663c23b7 and
711bab1e4d19.
Somebody will have to try harder before submitting this patch again.
I've spent entirely too much time on it already, and the #ifdef maze yet
to be written in order for it to build at all got on my nerves. The
amount of work needed to get a platform-specific performance improvement
that's barely above the noise level is not worth it.
Diffstat (limited to 'src/backend/lib/bloomfilter.c')
-rw-r--r-- | src/backend/lib/bloomfilter.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/src/backend/lib/bloomfilter.c b/src/backend/lib/bloomfilter.c index e2c1276f219..1e907cabc6e 100644 --- a/src/backend/lib/bloomfilter.c +++ b/src/backend/lib/bloomfilter.c @@ -37,7 +37,6 @@ #include "access/hash.h" #include "lib/bloomfilter.h" -#include "port/pg_bitutils.h" #define MAX_HASH_FUNCS 10 @@ -188,7 +187,19 @@ double bloom_prop_bits_set(bloom_filter *filter) { int bitset_bytes = filter->m / BITS_PER_BYTE; - uint64 bits_set = pg_popcount((char *) filter->bitset, bitset_bytes); + 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); + } + } return bits_set / (double) filter->m; } |