在 C 语言中读取大型缓冲区 - 高效技术



我正在用C语言编程。有时我们必须从通常使用 fread 或读取系统调用的文件中读取大数据,这意味着流 I/O 或系统调用 I/O。

我想问一下,如果我们正在读取如此大的数据,然后计算块大小并根据该数据进行读取,它会以任何方式帮助我们有效地读取它吗?

我知道通读系统调用会使它变慢,并且还有其他条件,例如如果我们必须处理网络套接字,那么我们应该使用这些套接字,而不是使用基于流的 I/O 会给我们优化的结果。同样明智的是,我需要一些提示和技巧来从文件中读取大量数据以及要处理的事情。

另外,如果mmap可以比这些传统的I/O更有利,请详细说明何时会如此?

平台 : Linux , gcc 编译器

您是否考虑过使用 mmap 对文件进行内存映射?

我认为以块为单位阅读总是一个好主意。对于大文件,我们显然不希望在堆中分配大量内存。如果文件的数量级为几MB,那么我认为我们可以在char缓冲区中一次读取整个文件,并使用该缓冲区来处理您的数据。这将比一次又一次地从文件中读取更快。

最新更新