c ++:更小的文件或更少的大文件?

时间:2012-09-20 22:18:16

标签: c++ performance file file-access

我编写了一个c ++编程来查询100 GB字典。我已将字典拆分为n个大小相等的文件。所有拆分文件都放在同一个目录中。字典是完全索引的,即,一旦查询到来,我知道要打开哪个spit-file以及在哪里寻找。我的问题是为了获得更好的性能,哪种分裂会更好: (a)少量大文件或(b)大量小文件? 那么,理想的分裂是什么?

1 个答案:

答案 0 :(得分:0)

我认为这个问题没有直接的答案。只有实验可以告诉你。无论大小如何,打开文件进行读取的成本应该是恒定的,因此读取文件的内容当然取决于文件大小。

但还有其他提示 我假设当你得到一个查询时,你打开文件,完全解析/读取它,或者直到找到单词然后关闭文件并返回结果,在这种情况下有许多增强功能要做,也许你有它们,也许不是,但是这里去了

  1. 如果您收到很多疑问,打开文件可能会很昂贵 您可能需要缓存文件或搜索查询 更好的表现
  2. 当你打开一个文件并阅读它时,你是按顺序执行的,这意味着文件或多或少地被加载到内存中,我来过java的sax xml解析器,它能够加载只有所需的xml块存入内存,才能处理真正庞大的xml文件,也许有些类似于c ++的东西。 SAX project
  3. 检查when is a file loaded into memory

    完全不同的方法是使用带索引的数据库。这个问题你不必处理文件打开问题