多次读后I/O流变慢



我在c++中实现了一个范围搜索代码,我有一个大文件(20GB),我需要搜索不同查询的特定范围。
我已经将大文件分成了更小的块来固定搜索,我有两个层次,根和叶,数据存储在叶中(遵循ISAM树的相同思想)。

即:我有3000 000 000行数据
分为30000页,每页100000行指向每个页面的根(根有30000)。

然而,我注意到一旦搜索范围从第200页或更高页开始,流就会变得明显变慢。我每看完一页就关上。那么,有什么原因导致阅读流变得非常慢吗?

  • 我在linux机器上运行
  • 我没有执行多线程的选项
  • 读取这些文件是顺序的。

为什么阅读流变得很慢?

缓存错过!

文件解析的速度很大程度上取决于文件系统缓存。如果它们存在,那么解析将相对较快。如果不是,它不会那么快。

您有一个大文件(20GB),它太大了,缓存无法容纳。因此,您的缓存将被耗尽,程序将被迫从磁盘获取数据(这将严重损害性能)。

相关内容

  • 没有找到相关文章

最新更新