c/c++语言开发共享如何在非常大的文本文件上直接有效地访问?

我有一个非常大的文本文件(+ 10GB),我想阅读一些数据挖掘技术。 为此,我使用MPI并行技术,因此许多进程可以一起访问同一个文件。
实际上,我希望每个进程读取N行数。 由于文件不是结构化的(相同数量的字段,但每个字段可以包含不同数量的字符),我有义务解析文件,这不是并行的,而且需要花费很多时间。 有没有办法直接访问特定数量的行,并解析和计算行数? 谢谢你的帮助。

    如果您的文件没有以其他方式编入索引,则没有直接的方法。

    索引它可能是值得的(扫描一次以找到所有行结尾,并存储每行或每行的偏移)。 如果您需要多次处理该文件,并且它不会更改,那么索引它的成本可能会因为使用索引进行进一步运行而变得容易。

    否则,如果您不需要所有作业具有完全相同数量的行/项,您可以捏造它。
    寻找给定的偏移量(比如1G),并寻找最近的行分隔符。 在偏移2G等处重复,直到找到足够的断点。

    然后,您可以在已识别的每个块上启动并行任务。

    除了此处提到的其他一些选项,不需要扫描整个文件:

    没有没有:在你不读取你的未知数据之前,没有人会知道有多少新行字符。 这个问题的复杂性是O(n)因此意味着至少一次你必须阅读整个文件。 然后,您可能希望构建一个索引表,在其中记录文件中有新行字符的位置:所有进程都可以使用它,并且使用fseek可以大大加快访问速度。

    需要了解更多c/c++开发分享如何在非常大的文本文件上直接有效地访问?,也可以关注C/ C++技术分享栏目—计算机技术网(www.ctvol.com)

      以上就是c/c++开发分享如何在非常大的文本文件上直接有效地访问?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注(计算机技术网)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请点击右边联系管理员删除。

      如若转载,请注明出处:https://www.ctvol.com/c-cdevelopment/980482.html

      (0)
      上一篇 2021年12月14日
      下一篇 2021年12月14日

      精彩推荐