go语言实现简单布隆过滤器

oldcat · 2021-05-21 17:16:33 · 2850 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2021-05-21 17:16:33 的主题,其中的信息可能已经有所发展或是发生改变。

Go语言BloomFilter包(布隆过滤器)

安装使用

go get github.com/t924417424/BloomFilter

package main

import (
    "github.com/t924417424/BloomFilter"
)

func main() {
    filter := bloomfilter.NewBloomfilter(bloomfilter.Config{HashLoop: 30})
    filter.Insert([]byte("123"))
    println(filter.Contains([]byte("123")))
    filter.Debug()
}

测试用例

myFilter := NewBloomfilter(Config{HashLoop: 20})
key      := []byte("123")
key2     := []byte("456")
key3     := []byte("999")
myFilter.Insert(key)
myFilter.Insert(key2)
myFilter.Contains(key)
myFilter.Contains(key2)

基准测试

Insert:

goos: darwin
goarch: amd64
pkg: github.com/t924417424/BloomFilter
cpu: Intel(R) Core(TM) i3-8100B CPU @ 3.60GHz
Benchmark_Insert-4         976336          1075 ns/op         160 B/op           1 allocs/op
PASS
ok      github.com/t924417424/BloomFilter    1.505s

Contains:

goos: darwin
goarch: amd64
pkg: github.com/t924417424/BloomFilter
cpu: Intel(R) Core(TM) i3-8100B CPU @ 3.60GHz
Benchmark_Contains-4        1000000          1054 ns/op         160 B/op           1 allocs/op
PASS
ok      github.com/t924417424/BloomFilter    1.169s

点击进入项目仓库


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

2850 次点击  
加入收藏 微博
1 回复  |  直到 2021-05-24 09:27:09
liangmanlin
liangmanlin · #1 · 4年之前

你不觉得性能太低了么

添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传