我正在用C语言编程。有时我们必须从我们通常使用fread或读取系统调用的文件中读取大数据,这意味着流I / O或系统调用I / O.
我想问一下,如果我们正在读取如此大的数据,然后根据它计算块大小和读数,它会以任何方式帮助我们有效地读取它吗?
我知道通过系统调用读取可以使它变慢并且还有其他条件,比如我们必须处理网络套接字然后我们应该使用这些,而不是使用基于流的I / O将给我们优化的结果。同样明智的我需要一些提示和技巧来从文件中读取大量数据以及需要处理的事情。
此外,如果mmap比这些传统的I / O更有优势,请详细说明情况何时?
平台:Linux,gcc编译器
答案 0 :(得分:4)
您是否使用mmap
考虑了memory-mapping文件?
答案 1 :(得分:2)
我认为以块读取总是一个好主意。对于大文件,我们显然不希望在堆中分配大量内存。 如果文件的大小为几MB,那么我认为我们可以在char缓冲区中一次读取整个文件并使用该缓冲区来处理数据。这比从文件中一次又一次地读取要快。