Product Promotion
0x5a.live
for different kinds of informations and explorations.
GitHub - OldPanda/bloomfilter: Yet another Bloomfilter implementation in Go, compatible with Java's Guava library
Yet another Bloomfilter implementation in Go, compatible with Java's Guava library - OldPanda/bloomfilter
Visit SiteGitHub - OldPanda/bloomfilter: Yet another Bloomfilter implementation in Go, compatible with Java's Guava library
Yet another Bloomfilter implementation in Go, compatible with Java's Guava library - OldPanda/bloomfilter
Powered by 0x5a.live ๐
bloomfilter
Overview
Yet another Bloomfilter implementation in Go, compatible with Java's Guava library. This library borrows how Java's Guava libraray implements Bloomfilter hashing strategies to achieve the serialization compatibility.
Installing
First pull the latest version of the library:
go get github.com/OldPanda/bloomfilter
Then import the this library in your code:
import "github.com/OldPanda/bloomfilter"
Usage Examples
Basic Usage
package main
import (
"fmt"
"github.com/OldPanda/bloomfilter"
)
func main() {
// create bloomfilter with expected insertion=500, error rate=0.01
bf, _ := bloomfilter.NewBloomFilter(500, 0.01)
// add number 0~199 into bloomfilter
for i := 0; i < 200; i++ {
bf.Put(i)
}
// check if number 100 and 200 are in bloomfilter
fmt.Println(bf.MightContain(100))
fmt.Println(bf.MightContain(200))
}
Serialization
package main
import "github.com/OldPanda/bloomfilter"
func main() {
// expected insertion=500, error rate=0.01
bf, _ := bloomfilter.NewBloomFilter(500, 0.01)
// add 0~199 into bloomfilter
for i := 0; i < 200; i++ {
bf.Put(i)
}
// serialize bloomfilter to byte array
bytes := bf.ToBytes()
// handling the bytes ...
}
Deserialization
package main
import (
"fmt"
"github.com/OldPanda/bloomfilter"
)
func main() {
// create bloomfilter from byte array
bf, _ := bloomfilter.FromBytes(bytes)
// check whether number 100 is in bloomfilter
fmt.Println(bf.MightContain(100))
}
Benchmark
The benchmark testing runs on element insertion and query separately.
ยป go test -bench . -benchmem ./...
# github.com/OldPanda/bloomfilter.test
goos: darwin
goarch: arm64
pkg: github.com/OldPanda/bloomfilter
BenchmarkBloomfilterInsertion-12 11091939 90.62 ns/op 17 B/op 1 allocs/op
BenchmarkBloomfilterQuery-12 20389624 53.16 ns/op 15 B/op 1 allocs/op
BenchmarkBloomfilterDeserialization-12 293098 3767 ns/op 13200 B/op 52 allocs/op
PASS
ok github.com/OldPanda/bloomfilter 3.719s
GoLang Resources
are all listed below.
Made with โค๏ธ
to provide different kinds of informations and resources.