Example #1
0
func (this *PartitionedBloom) Reset() {
	this.k = bloom.K(this.e)
	this.m = bloom.M(this.n, this.p, this.e)
	this.s = bloom.S(this.m, this.k)
	this.b = makePartitions(this.k, this.s)
	this.bs = make([]uint, this.k)

	if this.h == nil {
		this.h = fnv.New64()
	} else {
		this.h.Reset()
	}
}
Example #2
0
// New initializes a new partitioned bloom filter.
// n is the number of items this bloom filter predicted to hold.
func New(n uint) bloom.Bloom {
	var (
		p float64 = 0.5
		e float64 = 0.001
		k uint    = bloom.K(e)
		m uint    = bloom.M(n, p, e)
		s uint    = bloom.S(m, k)
	)

	return &PartitionedBloom{
		h:  fnv.New64(),
		n:  n,
		p:  p,
		e:  e,
		k:  k,
		m:  m,
		s:  s,
		b:  makePartitions(k, s),
		bs: make([]uint, k),
	}
}