aboutsummaryrefslogtreecommitdiff
path: root/src/backend/lib/bloomfilter.c
diff options
context:
space:
mode:
authorAlvaro Herrera <alvherre@alvh.no-ip.org>2019-02-15 16:32:30 -0300
committerAlvaro Herrera <alvherre@alvh.no-ip.org>2019-02-15 16:32:30 -0300
commit457aef0f1fd365c68fab3fa2ca3ae48c5bd230c6 (patch)
tree9405a4a8b2406ab0d138a4ee7230891f7ffa3bfa /src/backend/lib/bloomfilter.c
parente89f14e2bb9f7c392c4c85a53ab5a13ea2aed83d (diff)
downloadpostgresql-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.c15
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;
}