用于在C中读取文件的最佳缓冲区大小

时间:2012-11-17 18:08:01

标签: c io

我必须使用read函数在C中读取大文件。我只是想知道在性能方面我们保留的缓冲区大小是否有所不同。文件大小可能达到几十GB。

2 个答案:

答案 0 :(得分:9)

简短版本。
这取决于。在x86缓冲区大小为4096字节是一个良好的开端(一个page sizeAdvanced Format块大小。)

更长版本。
在UNIX中,它依赖于内核,libc,文件系统,硬件等。不仅在版本和编译选项上,而且在运行时可调参数上(例如,预读设置)。

DIY。
测试一下!有关确定一个特定系统的最佳读写缓冲区大小的直接方法,请参阅Advanced Programing in UNIX Environment第3.9章“I / O效率”。

答案 1 :(得分:0)

首先:肯定是磁盘逻辑/物理扇区大小的倍数,您可以使用hdparm进行检查。这是相同的

提示:libc的fopen(3)fread(3)fwrite(3)等功能已经为您做了一些很好的缓冲。

另一个提示:如果您不需要流式传输整个文件,而是随机访问部分文件,则可以尝试mmap()