如果要显式指定缓冲区大小,应使用 Fread/FWRITE 还是读/写系统调用



我有一个应用程序,我想从/向硬盘驱动器读取/写入数据,但同时我想指定将使用的缓冲区的大小,以使应用程序更高效(与I/O相关)。

我实现了两个版本,一个使用读/写系统调用,另一个使用fread/fwrite函数,其中指定了我对setvbuf函数调用的缓冲区大小。

但是,我注意到大型输入的运行时间差异为 2。

这引发了一些问题,即当您想要利用从磁盘传输数据块的能力以最小化 I/O 总量时,是否应始终首选使用读/写系统调用。

这取决于要读/写的数据量,如果将缓冲区设置为非常小,则读取/写入大量数据的效率低下。

这是一个比较。

最新更新