主要是测试了改进后的Bloomfilter的性能
1.改进前,采用的是BitSet
测试结果: 测试总量:10,000,000 HASH函数个数:8个 冲突数:4
内存占用:450,000,000 花费时间:51,294
2.改进后,采用数组方式 均采用2个hash函数
测试结果:
测试总量:10,000,000 浮动大小:0.85 冲突数:0
内存占用:47,058,824 花费时间:8,563 统计数:10,000,000
测试总量:10,000,000 浮动大小:0.75 冲突数:0
内存占用:53,333,332 花费时间:8,019 统计数:10,000,000
测试总量:10,000,000 浮动大小:0.85 冲突数:0
内存占用:47,058,824 花费时间:8,003 统计数:10,000,000
测试总量:10,000,000 浮动大小:0.95 冲突数:0
内存占用:42,105,264 花费时间:8,253 统计数:10,000,000
测试总量:20,000,000 浮动大小:0.85 冲突数:0
内存占用:94,117,648 花费时间:13,331 统计数:20,000,000
测试总量:20,000,000 浮动大小:0.75 冲突数:0
内存占用:106,666,664 花费时间:14,097 统计数:20,000,000
测试总量:20,000,000 浮动大小:0.95 冲突数:0
内存占用:84,210,528 花费时间:14,132 统计数:20,000,000
测试总量:100,000,000 浮动大小:0.95 冲突数:1
内存占用:421,052,640 花费时间:79,357 统计数:99,999,999
测试总量:100,000,000 浮动大小:0.85 冲突数:0
内存占用:470,588,224 花费时间:72,870 统计数:100,000,000
测试总量:200,000,000 浮动大小:0.85 冲突数:0
内存占用:941,176,448 花费时间:153,760 统计数:200,000,000
可见,采用ARRAY改进后的BloomFilter性能大大提升,并且支持删除操作,即能替代CBF的功能
由结果比较可知,当浮点因子为0.85时耗时最低,冲突率大大降低
分享到:
相关推荐
布隆过滤器是一种空间效率极高的概率型数据结构,用于测试一个元素是否在一个集合中。它可能会返回假阳性匹配(即错误地报告元素存在于集合中),但不会返回假阴性匹配(即永远不会错误地报告元素不存在于集合中)。...
布隆过滤器(Bloom Filter)是一种空间效率极高的概率型数据结构,用于判断一个元素是否在一个集合中。它可能会误判,但不会漏...此外,还可以通过测试不同参数组合下的性能,进一步了解布隆过滤器在不同场景下的表现。
哈希函数的设计是布隆过滤器性能的重要组成部分。好的哈希函数应该具有以下特性: 1. **均匀性**:哈希函数应尽可能使得不同的输入映射到位数组的不同位置。 2. **独立性**:不同的输入经过哈希函数后应该相互独立,...
布隆过滤器是一种概率数据结构,用于判断一个元素是否可能在一个集合中存在。它通过使用位数组和几个独立的哈希函数来实现,具有高效、节省空间的特点,但可能会产生假阳性错误,即误判一个不在集合中的元素为在集合...
10. **测试与性能评估**:在C源码中,通常会有测试用例来验证布隆过滤器的功能正确性,同时,为了评估性能,可能会对比不同参数下的误判率和空间占用,找到最优配置。 以上就是关于"布隆过滤器C源码"的相关知识点,...
4. **误判率**:布隆过滤器的误判率与哈希函数的数量、数组长度和插入元素数量有关。公式通常表示为`P = (1 - e^(-kn/m))^k`,其中`k`是哈希函数数量,`n`是元素数量,`m`是数组长度。 ### 实现细节 在提供的`...
规则库中包含了用于哈希函数计算的参数,这些参数会影响到布隆过滤器的性能,包括误判率和过滤率。在硬件实现时,这些规则库参数也需要被适配到硬件逻辑中,以确保硬件电路能够正确地生成和验证布隆过滤器。 在处理...
使用布隆过滤器可以解决大量数据去重问题,提高系统性能和效率。 布隆过滤器的优点是: * 需要的空间复杂度远远小于哈希表 * 可以快速判断元素是否在集合中 * 可以解决大量数据去重问题 布隆过滤器的缺点是: * ...
布隆过滤器是一种高效的数据结构,它用于检测一个元素是否可能存在于一个集合中。由Burton Howard Bloom在1970年提出的布隆过滤器,其核心特点是利用多个哈希函数将元素映射到固定大小的位数组中,以此来判断元素的...
RedisBloom是一个专门为Redis设计和实现的布隆过滤器扩展模块。它允许用户在Redis数据库中存储和查询可能存在的元素,特别适用于空间效率要求高的场景,例如防止重复数据存储、检查一个元素是否可能存在于大数据集中...
布隆过滤器是一种空间效率极高的概率型数据结构,用于测试一个元素是否可能在一个集合中。它可能会产生误报(false positive),但不会产生误删(false negative)。Python-cljcbloom项目是基于Clojure语言实现的一...
通过将IDS与深度包检测(Deep Packet Inspection, DPI)技术相结合,利用布隆过滤器对告警数据进行预处理,可以减少不必要的后续关联分析,进一步提升系统的响应速度和准确性。 此外,文章还提及了关联分析技术的...
在分布式系统中,数据过滤是常见的需求之一,用于判断一个元素是否可能存在于大规模数据集中,而布隆过滤器(Bloom Filter)就是一种高效的、空间效率极高的概率型数据结构,用于测试一个元素是否可能存在在一个集合...
【布隆过滤器(Bloom Filter)】是一种空间效率极高的概率型数据结构,用于测试一个元素是否在一个集合中。它可能会误报一个元素在集合中(假阳性),但不会漏报(假阴性)。布隆过滤器的核心在于一个位数组和多个独立...
在具体的研究过程中,作者深入分析了不同条件下树状布隆过滤器的性能,并与传统的压缩布隆过滤器和标准布隆过滤器进行了比较。这一分析既包括理论推导也包含实验验证,旨在找到使得树状布隆过滤器表现更优的特定场景...
BloomFilter原生(MRI/C)计数布隆过滤器Redis 支持的 getbit/setbit 非计数布隆过滤器Redis 支持的基于集合的计数 (+TTL) 布隆过滤器布隆过滤器是一种节省空间的概率数据结构,用于测试元素是否是集合的成员。...
在实际应用中,JavaScript的布隆过滤器常用于大型数据集的快速查询,如网页缓存、垃圾邮件过滤、去重检测等场景,特别是在内存或存储资源有限的情况下。 在下载的`bloomfilter.js`文件中,你可以找到具体的实现细节...
"TestProject"很可能是包含测试用例的项目,用于验证布隆过滤器的正确性和性能。"BuildProcessTemplates"可能是构建过程模板,指导编译和部署流程。最后,"BloomFilter"可能是一个源代码文件夹,包含了布隆过滤器的...
布隆过滤器的性能概述 :定义布隆过滤器参数... [0s 3.81267ms] :索引文件 dewiki-20140114-article-categories.ttl.ntriples...[3s 88.882374ms] :Lookup...数组的总大小为 575 [0s 27.010578ms] 下一步/测试 a)...
布隆过滤器(Bloom Filter)是一种空间效率极高的概率型数据结构,用于判断一个元素是否可能在一个集合中。它可能会误判,但不会漏判,即可能存在假阳性(False Positive),但绝不会有假阴性(False Negative)。...