Skip to content

Commit

Permalink
doc: clarify CRollingBloomFilter size estimate
Browse files Browse the repository at this point in the history
  • Loading branch information
ajtowns authored and robot-dreams committed Oct 2, 2020
1 parent 652c45f commit d9141a0
Showing 1 changed file with 12 additions and 1 deletion.
13 changes: 12 additions & 1 deletion src/bloom.h
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,18 @@ class CBloomFilter
* insert()'ed ... but may also return true for items that were not inserted.
*
* It needs around 1.8 bytes per element per factor 0.1 of false positive rate.
* (More accurately: 3/(log(256)*log(2)) * log(1/fpRate) * nElements bytes)
* For example, if we want 1000 elements, we'd need:
* - ~1800 bytes for a false positive rate of 0.1
* - ~3600 bytes for a false positive rate of 0.01
* - ~5400 bytes for a false positive rate of 0.001
*
* If we make these simplifying assumptions:
* - logFpRate / log(0.5) doesn't get rounded or clamped in the nHashFuncs calculation
* - nElements is even, so that nEntriesPerGeneration == nElements / 2
*
* Then we get a more accurate estimate for filter bytes:
*
* 3/(log(256)*log(2)) * log(1/fpRate) * nElements
*/
class CRollingBloomFilter
{
Expand Down

0 comments on commit d9141a0

Please sign in to comment.