【发布时间】:2012-12-02 13:47:44
【问题描述】:
我想读取一个结构类似于以下的大文件:
John 10 department
Hello 14 kjezlkjzlkj
jhfekh 144 lkjzlkjrzlj
........
问题是我想在用 C++ 读取这个文件时尽量减少对磁盘的 I/O 访问次数。有没有办法访问磁盘上的文件,然后将文件的大部分读取到内存(即 1 个磁盘访问),然后读取文件的第二大部分(第二个磁盘访问......等等)?
任何帮助将不胜感激。
【问题讨论】:
-
我尝试逐行读取文件,但我认为读取每一行都会导致磁盘访问,对吧?
-
我怀疑,这取决于您用来阅读该行的方法。
-
@John,“读取每一行都会导致磁盘访问”-不。操作系统将缓存文件和缓冲区读取,尤其是顺序读取。通过简单地在程序中添加缓冲,您不太可能看到任何显着的加速。您必须大幅更改解析算法才能利用缓冲区。