我有一个项目,我必须在数据范围从兆字节到兆字节的范围内实现快速搜索,插入和删除操作。我一直在研究最近的数据结构并分析它们。作为具体的,我想对引进3例,提出问题:红黑树与B树
的数据比什么内存可以一气呵成处理(10-15 TB的样本范围)等等。在这种情况下,我会将数据结构存储在磁盘上。
与系统的内存相比,数据相对较少,因此可以在存储器本身中存储和操作以提高速度。
数据不仅仅是空闲内存,并且假定它小于分页文件中可能的连续数据块的大小。因此我将数据结构存储在磁盘上的一个文件中,并执行文件的内存映射。
我已经得出的结论是:
对于情况1,I应,因为它节省了由磁盘旋转产生滞后使用B树以便更快地访问
对于情况2,I应该使用红色黑色树来更快地访问数据,因为数据在内存中并且没有。在最坏的情况下需要扫描的元素将少于我使用B树时必须要做的一个元素
对于案例3,我对此有疑问,页面文件在磁盘上使用本机OS I/O对文件进行操作,那么B树应该是更好的选择还是红黑树?
我想知道上述三个结论是正确的,哪里出了问题,以及如何在三个不同的情况下改进性能。
我使用的是C++语言,带有一个红黑树和一个B树,两者都是我从头开始设计的。我正在使用Boost库进行文件映射。
更新1 ::通过this通过阅读文章在stackoverflow。得到了一些真正的好的见解,这让我觉得我在案例中所做的比较类型可能是错误的。答案最多的一个链接发布了http://idlebox.net/2007/stx-btree/stx-btree-0.8.3/doxygen-html/speedtest.html
你要做什么样的搜索?按键简单搜索?钥匙是怎么样的? – svick
你或多或少正确。 继续执行,如果遇到问题,请在此处询问。 – nikhil
@svick是的我正在按键进行简单的搜索,以最一般的方式,他们可能是一个谨慎的,或以数字连续的顺序,从1开始的不同的自然数集合表示一个值,如(2^8)-1 – swanar