Commit 43278af6 authored by Mike Trinkala's avatar Mike Trinkala Committed by antirez
Browse files

Correct the HyperLogLog stale cache flag to prevent unnecessary computations.

Set the MSB as documented.
parent 3203e2dc
...@@ -188,8 +188,8 @@ struct hllhdr { ...@@ -188,8 +188,8 @@ struct hllhdr {
}; };
/* The cached cardinality MSB is used to signal validity of the cached value. */ /* The cached cardinality MSB is used to signal validity of the cached value. */
#define HLL_INVALIDATE_CACHE(hdr) (hdr)->card[0] |= (1<<7) #define HLL_INVALIDATE_CACHE(hdr) (hdr)->card[7] |= (1<<7)
#define HLL_VALID_CACHE(hdr) (((hdr)->card[0] & (1<<7)) == 0) #define HLL_VALID_CACHE(hdr) (((hdr)->card[7] & (1<<7)) == 0)
#define HLL_P 14 /* The greater is P, the smaller the error. */ #define HLL_P 14 /* The greater is P, the smaller the error. */
#define HLL_REGISTERS (1<<HLL_P) /* With P=14, 16384 registers. */ #define HLL_REGISTERS (1<<HLL_P) /* With P=14, 16384 registers. */
...@@ -953,7 +953,7 @@ double hllRawSum(uint8_t *registers, double *PE, int *ezp) { ...@@ -953,7 +953,7 @@ double hllRawSum(uint8_t *registers, double *PE, int *ezp) {
return E; return E;
} }
/* Return the approximated cardinality of the set based on the armonic /* Return the approximated cardinality of the set based on the harmonic
* mean of the registers values. 'hdr' points to the start of the SDS * mean of the registers values. 'hdr' points to the start of the SDS
* representing the String object holding the HLL representation. * representing the String object holding the HLL representation.
* *
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment