我试图使用布卢姆/布谷鸟过滤器来检查我是否已经存储了两个数字f.e的元组。(7,25),(47,1576),.等
In [12]: from cuckoo.filter import ScalableCuckooFilter
In [13]: c = ScalableCuckooFilter(initial_capacity=1000000, error_rate=0.0001)
In [14]: c.filters[0].buckets.buffer_info()
Out[14]: (140042688086032, 8500000, 'big', 0, 8500000, 0, 0, 0)
In [15]: 8500000/(1024*1024)
Out[15]: 8.106 MB为了存储数字,我需要每个数字2字节,所以1mln *4字节=3.8Mb
所以过滤器比数据大!
是否有适合于内存占用较低的数字的方法或结构?
发布于 2022-04-21 14:50:24
对于杜鹃过滤器和布鲁姆过滤器等近似成员资格查询的大小有一个下限。它是-log2(epsilon),对您来说是13.3位。您可以通过使用凸带滤波器来接近这一点。
https://stackoverflow.com/questions/71096638
复制相似问题